Spi*_*ico 3 r frequency subset
我有subset()函数的问题.如何通过观察次数对我的数据帧的因子进行子集化?
NAME CLASS COLOR VALUE
antonio B YELLOW 5
antonio B BLUE 8
antonio B BLUE 7
antonio B BLUE 12
luca C YELLOW 99
luca B YELLOW 87
luca B YELLOW 98
giovanni A BLUE 48
Run Code Online (Sandbox Code Playgroud)
我想获得数据,其中"NAME","CLASS"和"COLOR"三个因子至少比较三次,以便得出VALUE的平均值.在这种情况下,我将获得:
NAME CLASS COLOR VALUE
antonio B BLUE mean
Run Code Online (Sandbox Code Playgroud)
因为antonio是每个因素唯一的三个观察结果
非常感谢
聂
flo*_*del 10
您可以使用以下table功能:
subset(df, table(FACTOR)[FACTOR] >= 3)
# FACTOR VALUE
# 1 ANTONIO 5
# 2 ANTONIO 8
# 3 ANTONIO 7
Run Code Online (Sandbox Code Playgroud)
为了帮助您理解,请看看这些回报:
table(df$FACTOR)
table(df$FACTOR)[df$FACTOR]
table(df$FACTOR)[df$FACTOR] >= 3
Run Code Online (Sandbox Code Playgroud)
您还可以使用该ave函数计算观察数量:
subset(df, ave(VALUE, FACTOR, FUN = length) >= 3)
Run Code Online (Sandbox Code Playgroud)
如果您有多个因素,例如您在评论和更新的问题中提出的问题,那么最后一种方法可能会更灵活一些.你可以做:
subset(df, ave(VALUE, NAME, CLASS, COLOR, FUN = length) >= 3)
Run Code Online (Sandbox Code Playgroud)