R 子集()由观察次数决定的因子
我对subset()函数有一个问题。如何通过观察次数来子集数据帧的某个因子R 子集()由观察次数决定的因子,r,frequency,subset,R,Frequency,Subset,我对subset()函数有一个问题。如何通过观察次数来子集数据帧的某个因子 NAME CLASS COLOR VALUE antonio B YELLOW 5 antonio B BLUE 8 antonio B BLUE 7 antonio B BLUE 1
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
我希望获得三个因素“名称”、“类别”和“颜色”至少比较三次的数据,以便得出平均值。在这种情况下,我将获得:
NAME CLASS COLOR VALUE
antonio B BLUE mean
因为安东尼奥是唯一一个对每个因素都有三个观察的人
多谢各位
Nik您可以使用
表
功能,如下所示:
subset(df, table(FACTOR)[FACTOR] >= 3)
# FACTOR VALUE
# 1 ANTONIO 5
# 2 ANTONIO 8
# 3 ANTONIO 7
为了帮助您理解,请参见以下内容:
table(df$FACTOR)
table(df$FACTOR)[df$FACTOR]
table(df$FACTOR)[df$FACTOR] >= 3
您还可以使用
ave
函数来计算观察次数:
subset(df, ave(VALUE, FACTOR, FUN = length) >= 3)
如果您在评论和更新的问题中提出了多种因素,那么最后一种方法可能会更灵活一些。你可以做:
subset(df, ave(VALUE, NAME, CLASS, COLOR, FUN = length) >= 3)
好的,那么如果我有两个因子,它仍然是正确的吗?:子集(df,table(factor1,factor2)[factor1]>=3)谢谢你,所以我不清楚,你可以编辑你的问题,并提供一个例子,说明两个因子的意思(别忘了给出预期的输出)。好的,我编辑了我的问题。更清楚吗?提前感谢,有没有可能将此技术与动态列名一起使用?即使我为它下标(例如,
table(df[name])[df[name]]>=3
),我似乎也无法让它工作。没关系。我发现在第二种情况下只需返回一个向量,如表(df[name])[df[[name]]]>=3
。但我必须说,这是一个很大的括号。:-)