相关疑难解决方法(0)

R:检查一组变量是否形成唯一索引

我有一个大数据框,我想检查一组(因子)变量的值是否唯一标识数据的每一行。

我目前的策略是按我认为是索引变量的变量进行聚合

dfAgg = aggregate(dfTemp$var1, by = list(dfTemp$var1, dfTemp$var2, dfTemp$var3), FUN = length)
stopifnot(sum(dfAgg$x > 1) == 0)
Run Code Online (Sandbox Code Playgroud)

但这个策略需要永远。更有效的方法将不胜感激。

谢谢。

r data.table

4
推荐指数
1
解决办法
1026
查看次数

通过获取总和来聚合重复的行

继我的问题之后:
1.确定一组变量是否唯一地标识数据的每一行;
2. 根据给定的变量集标记所有重复的行,
我现在想通过获取它们的总和,根据给定的变量集合来汇总/合并所有重复的行.

解决方案1:

关于如何在这里执行此操作有一些指导,但是当存在构成索引的大量变量级别时,ddply推荐的方法很慢,因为在我尝试标记所有重复项的情况下通过一组给定的变量.

# Values of (f1, f2, f3, f4) uniquely identify observations
dfUnique = expand.grid(f1 = factor(1:16),
                       f2 = factor(1:41),
                       f3 = factor(1:2),
                       f4 = factor(1:104))

# sample some extra rows and rbind them
dfDup = rbind(dfUnique, dfUnique[sample(1:nrow(dfUnique), 100), ])

# dummy data 
dfDup$data = rnorm(nrow(dfDup))

# aggregate the duplicate rows by taking the sum
dfDupAgg = ddply(dfDup, .(f1, f2, f3, f4), summarise, data = sum(data))
Run Code Online (Sandbox Code Playgroud)

解决方案2:

第二个解决方案是使用data.table,并遵循 …

r plyr data.table

4
推荐指数
1
解决办法
2598
查看次数

标签 统计

data.table ×2

r ×2

plyr ×1