我正在尝试使用rowSums,但使用比较对值进行条件判断。
这是我的数据框的一个例子,基于调查。其中行代表参与者,列代表孩子的出生日期。
b3_01 b3_02 b3_03 b3_04 b3_05 b3_06
1 1360 1360 1266 1228 1181 1158
2 1362 1342 1301 1264 1245 1191
3 1379 NA NA NA NA NA
4 1355 1330 1293 1293 1227 1208
5 1391 1371 1358 1334 1311 1311
在这里,类似的日期指的是双胞胎。我想要做的是创建一个新的列,告诉我每行这些列的值相似的次数。这将给我一些类似于这样的东西:
b3_01 b3_02 b3_03 b3_04 b3_05 b3_06 twins
1 1360 1360 1266 1228 1181 1158 1
2 1362 1342 1301 1264 1245 1191 0
3 1379 NA NA NA NA NA 0
4 1355 1330 1293 1293 1227 1208 1
5 1391 1371 1358 1334 1311 1311 1
编辑:抱歉,我忘了说如果任何数字出现3次或更多次,它不应计为孪生数。最终目标是有4列:一个用于单个数字(每个数字仅出现一次),一个用于孪生数,一个用于三胞胎(如果任何数字出现三次),以及一个用于四胞胎。
我正在使用dplyr。由于数据框非常大,我需要指定要进行比较的列的范围。我已尝试以下代码及其变体:
twins<-df%>%
mutate(twins= rowSums(select(.,starts_with("b3_")) == select(.,starts_with("b3_")),na.rm=TRUE))
这种方法不起作用。我也尝试了其他函数,但无法找到解决方案。
你有任何想法如何实现吗?我感觉解决方案很简单,但我是R的绝对初学者。
table
的逻辑非常好。你将会得到单独项的数量,即sum(table==1)
,双胞胎的数量为sum(table==2)
,三胞胎的数量为sum(table==3)
。我会更新我的答案。 - Jonas