DF1是
ID CompareID Distance
1 256 0
1 834 0
1 946 0
2 629 0
2 735 1
2 108 1
预期输出应为DF2,如下所示(生成DF2的条件->在DF1中,对于任何ID(如果“Distance” == 1,则将相应的“CompareID”放入“SimilarID”列),对于“Distance” == 0,忽略对应的“CompareID”)
ID SimilarID
1 None
2 735,108
比较正确完成,但输出低于输出
ID SimilarID
1 ?
2 735,108
我知道,因为在“SimilarID”中没有“CompareID”-?标记显示。
我要替换这个“?”为“无”或“0”。请帮助
在某些情况下,我观察到的不是“?”我还可以看到“NULL”值。
谢谢 !
最佳答案
使用data.table包,其中df
是您的原始数据...
library(data.table)
setDT(df)[, .(SimilarID = if(all(Distance == 0)) "None"
else toString(CompareID[Distance == 1])), by = ID]
# ID SimilarID
# 1: 1 None
# 2: 2 735, 108
通过返回
ID
来遵循您的预期输出当所有
"None"
列均为零时Distance
CompareID
为1时的Distance
值,以逗号分隔的字符串数据:
df <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 2L), CompareID = c(256L,
834L, 946L, 629L, 735L, 108L), Distance = c(0L, 0L, 0L, 0L, 1L,
1L)), .Names = c("ID", "CompareID", "Distance"), class = "data.frame", row.names = c(NA,
-6L))
关于r - 如何替换NULL/?在R中使用 'None'或 '0',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39840152/