【发布时间】:2017-07-04 01:07:10
【问题描述】:
我有大量包含调查数据的 CSV 文件。结果,我知道有大量重复数据。因此,我想通过查找独特响应的频率来总结数据。通常,我通过插入一个值为 1 的频率列然后对其求和来做到这一点。像这样:
data = aggregate(data$Freq, by = list(ONE = data$ONE, TWO = data$TWO, THREE = data$THREE), FUN = sum)
在这种情况下,这种方法是不可行的,因为列名不一致并且数量可变。示例数据如下所示:
data = data.frame(
ONE = sample(1:2, 40, TRUE),
TWO = sample(1:2, 40, TRUE),
THREE = sample(1:5, 40, TRUE));
data$Freq = 1
如何保留唯一值并找到它们的出现次数?
【问题讨论】:
-
是否有机会获得一些样本数据集来拯救我们自己的数据集?
-
data = data.frame(ONE=sample(LETTERS[1:4],20,TRUE), TWO=sample(LETTERS[1:4],20,TRUE)); data$Freq=1? -
@Spacedman 因素。我已根据有效的调查回复将它们清理为 [0, 1] 或 [1, 5]。
-
您可以像这样使用
aggregate的公式界面:aggregate(Freq ~ ., data=data, sum)。点表示“所有其他变量”。 -
作为第二种选择,使用您问题中的直接界面,您可以使用
grep,如aggregate(data$Freq, by = data[-grep("Freq", names(data))], FUN = sum)。