【发布时间】:2015-09-02 10:42:12
【问题描述】:
我有如下DT的数据表,
col1 col2 col3 col4 col5
1: 1 2 3 4 5
2: 4 5 6 8 9
3: 3 4 4 5 5
4: 4 3 5 3 3
5: 4 5 6 6 67
我想为每一行计算某些列中的唯一值(对于每一行,我想使用不同的列来计算唯一值)
如何以尽可能少的步骤实现这一目标?表格很大,所以运行 for 循环是不可能的。
我正在寻找类似的解决方案
DT[ , count_unique:= apply(DT[ , cols, with = F], 1, function(x) { length(unique(x)) })]
但这会失败,因为“cols”需要为每一行占用不同的列。
任何帮助将不胜感激。
【问题讨论】:
-
你看过
mapply它允许你为你的函数提供多个参数吗? -
您可能最好将数据重新整形为长格式。但由于您的预期输出不清楚,我无法评论具体如何做。
-
请提供所需的输出,因为我不明白您到底想要什么,如果您只想计算每行唯一项目的数量,这只是
apply(DT, 1, function(x) length(unique(x)));但是计算时要考虑的列数如何按行不同?? -
努力遵循预期的结果应该是什么样子。您能否添加示例数据集的预期结果?
-
您是否有另一个数据集显示每行要使用的列,还是基于随机抽样?
标签: r data.table apply