【发布时间】:2014-06-22 20:32:33
【问题描述】:
我想组合 4 列中每一行的值以获得单个唯一值并在 R 中创建这些值的新列。例如,我有一个如下的数据框:
Col_1 Col_2 Col_3 Col_4
1 23 45 12
0 45 17 4
0 667 60 5
64 123 299 5
87 23 60 6
现在我想要的新列 col_5 应该在它的所有行中包含一个唯一值,代表这 4 个值... 例如,第一行是 (1,23,45,12),它是我的数据框中的唯一组合,但列中的单个值不是,因此我想在 col_5 中为所有行分配一个唯一值。请在 R 中建议一个函数。
此外,如果组合多次出现,则 col_5 中此类重复的值应该相同。
我尝试过使用DT[, lapply(.SD,sum), by=list(col_1,col_2,col_3,col_4)] 和
DT[, Mean:=mean(col_4), by=list(col_1,col_2,col_3)] 但它没有给我独特的价值。
【问题讨论】:
-
您希望第 5 列的值为数字吗?如果是的话,它应该有一些基于 Col_1 等值的特定属性?
-
是的,我希望该值是数字,并且该值应该是 4 列中值的某个函数。
-
您可以使用
df$Col_5 <- do.call(paste, df),它将第一行的结果为1 23 45 12。我怀疑是否有可能获得您描述的所需结果(用逗号分隔)作为numeric类的列,因为这些条目不是正常数字。 -
@ShreedharPawar 我注意到在您提出的任何问题(目前为 14 个)中,您都没有接受答案。如果答案为您提供了所需的解决方案,则通常的做法是接受该答案(使用上/下投票按钮下方的复选标记按钮)。这将为未来的读者提供有关解决方案价值的线索。另请参阅此帮助页面:What should I do when someone answers my question? 如果您需要更多说明,您可以随时提出评论。