Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 子集()由观察次数决定的因子_R_Frequency_Subset - Fatal编程技术网

R 子集()由观察次数决定的因子

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

我对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
我希望获得三个因素“名称”、“类别”和“颜色”至少比较三次的数据,以便得出平均值。在这种情况下,我将获得:

   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
。但我必须说,这是一个很大的括号。:-)