R:基于一个列的值存在于另一列中,生成虚拟变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R:基于一个列的值存在于另一列中,生成虚拟变量相关的知识,希望对你有一定的参考价值。
我有一个这样的数据框:
A B
2012,2013,2014 2011
2012,2013,2014 2012
2012,2013,2014 2013
2012,2013,2014 2014
2012,2013,2014 2015
我想创建一个虚拟变量,该变量指示B列中的值是否存在于A列中。1表示存在,而0表示不存在。这样,
A B dummy
2012,2013,2014 2011 0
2012,2013,2014 2012 1
2012,2013,2014 2013 1
2012,2013,2014 2014 1
2012,2013,2014 2015 0
我曾尝试使用%in%
实现这一目标:
df$dummy <- ifelse(df$B %in% df$A, 1, 0)
但是事实证明dummy
列中的所有内容都是1
。
当我尝试使用另一种方法any()
时,发生了相同情况:
df$dummy <- any(df$A==df$B)
dummy
列中的所有内容都是TRUE
。
有没有一种有效的方法来生成这个虚拟变量?
非常感谢!
答案
[看起来A
列是一串用逗号分隔的数字,所以%in%
不合适(例如,如果您在多个字符串的向量中检查了B
会很有用,或者如果A
和B
是数字,则为数字)。如果您的数据框架结构不同,请告诉我(并随时编辑您的问题)。
另一答案
如果要使用基数R:
另一答案
制作制表符分隔的文件:
另一答案
这里是使用tidyverse
的另一种解决方案。主要问题是A
被作为字符串读取。我的解决方案首先将每个数字分成不同的列,然后将B
与这些数字进行比较。
以上是关于R:基于一个列的值存在于另一列中,生成虚拟变量的主要内容,如果未能解决你的问题,请参考以下文章
R中是不是有一种方法,如果一列的值满足另一列中的某个标准,则该列的值应该是上面的值