如何将 table 值分配给 R 中的原始数据?
How to assign table values to original data in R?
我在使用 R 方面还是个新手,对于任何愚蠢的问题深表歉意。
通常我必须处理非常大的数据集。
我想要每个观察的观察次数,而不会使原始数据集变小。
我有一个非常小的例子来解决我的问题:
Observations<-c("A1","A2","B1","B3","B3","C1","C1","C1","C1","C2","C3","C3","C3")
使用 table 我得到:
> table(Obsevations)
Observations
A1 A2 B1 B3 C1 C2 C3
1 1 1 2 4 1 3
但我真正想要的是:
A1 A2 B1 B3 B3 C1 C1 C1 C1 C2 C3 C3 C3
1 1 1 2 2 4 4 4 4 1 3 3 3
有没有一种优雅快速的方法可以在没有任何循环的情况下在大数据集中做到这一点?
提前致谢!
这里需要rep
tbl <- table(Observations)
rep(tbl, tbl)
# A1 A2 B1 B3 B3 C1 C1 C1 C1 C2 C3 C3 C3
# 1 1 1 2 2 4 4 4 4 1 3 3 3
根据示例,另一种选择是 ave
ave(seq_along(Observations), Observations, FUN = length)
我在使用 R 方面还是个新手,对于任何愚蠢的问题深表歉意。
通常我必须处理非常大的数据集。 我想要每个观察的观察次数,而不会使原始数据集变小。 我有一个非常小的例子来解决我的问题:
Observations<-c("A1","A2","B1","B3","B3","C1","C1","C1","C1","C2","C3","C3","C3")
使用 table 我得到:
> table(Obsevations)
Observations
A1 A2 B1 B3 C1 C2 C3
1 1 1 2 4 1 3
但我真正想要的是:
A1 A2 B1 B3 B3 C1 C1 C1 C1 C2 C3 C3 C3
1 1 1 2 2 4 4 4 4 1 3 3 3
有没有一种优雅快速的方法可以在没有任何循环的情况下在大数据集中做到这一点? 提前致谢!
这里需要rep
tbl <- table(Observations)
rep(tbl, tbl)
# A1 A2 B1 B3 B3 C1 C1 C1 C1 C2 C3 C3 C3
# 1 1 1 2 2 4 4 4 4 1 3 3 3
根据示例,另一种选择是 ave
ave(seq_along(Observations), Observations, FUN = length)