首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中矩阵列对数据帧的过滤

问R中矩阵列对数据帧的过滤
EN

Stack Overflow用户
提问于 2015-03-01 01:31:55
回答 1查看 1.2K关注 0票数 0

我有一个非常简单的数据框架,它有一个ID列和一个列,该列指示该行是否为真正(1或0)。我使用plyr的每个函数按ID对数据进行聚合,并使用agg <- aggregate(tp ~ v_id, data, each(mean, length))计算ID出现的次数和真正的平均值,并且得到以下数据:

代码语言:javascript
复制
head(agg)
                v_id tp.mean tp.length
1             A51599     1.0         4
2             A51670     1.0         2
3             A51672     1.0         2
4             A51676     1.0         2
5             A51677     1.0         2
6             A51678     0.5         2

这些数据很好,但是现在我想过滤掉tp.length小于100的所有行。我用子集函数和带条件的'[]‘操作符尝试了所有的东西。tp列似乎是一个矩阵,我不知道如何到达过滤器中的tp.length。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-01 01:40:19

为了便于重现,使用warpbreaks数据:

代码语言:javascript
复制
data(warpbreaks)
agg<-aggregate(breaks ~ wool + tension, data = warpbreaks, mean)
head(agg)
wool tension   breaks
1    A       L 44.55556
2    B       L 28.22222
3    A       M 24.00000
4    B       M 28.77778
5    A       H 24.55556
6    B       H 18.77778

agg<-agg[agg$breaks<44,]
head(agg)
  wool tension   breaks
2    B       L 28.22222
3    A       M 24.00000
4    B       M 28.77778
5    A       H 24.55556
6    B       H 18.77778

哈德利韦翰在这里有一个很好的一章关于减法。http://adv-r.had.co.nz/Subsetting.html。

您还可能希望通过调用integer或numeric来检查您的列是否为class(agg$tp.length)。

编辑:下面的注释是完全正确的--当您将2个或多个函数传递给data.frame时,它会生成类matrix的列。这些可以是几种方式的子集:

代码语言:javascript
复制
agg = aggregate(mpg ~ am , mtcars, function(i) c(mean(i), sd(i))) 
head(agg)
  am     mpg.1     mpg.2
1  0 17.147368  3.833966
2  1 24.392308  6.166504
str(agg)
'data.frame':   2 obs. of  2 variables:
 $ am : num  0 1
 $ mpg: num [1:2, 1:2] 17.15 24.39 3.83 6.17
class(agg[,2])
[1] "matrix"

可以将单个矩阵列设置为data.frame中的列,然后将原始答案子集。

代码语言:javascript
复制
agg$mpg1<-agg[,2][,1]
agg$mpg2<-agg[,2][,2]

head(agg)
  am     mpg.1     mpg.2     mpg1     mpg2
1  0 17.147368  3.833966 17.14737 3.833966
2  1 24.392308  6.166504 24.39231 6.166504
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28789082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档