2014-12-24 139 views
0

有关于这几个问题,但似乎我的问题并不适合与别人:我有一个名为“时间”栏,可以是0或1。基于在这个值上,我会使用同一行另一列的值。显示特定的列基于价值

举例来说,我想在列节点,但只适合那些时间栏中显示的所有字的摘要== 1换句话说:如果时间== 1,在同一行列节点的显示值。

我想:

summary(d[d$Time=="1", ]$Node) 

然而,这也显示不属于时间== 1个词语。那么这些词的确有一个0。

例子:

比方说,这是d:

Time - Node 
0  Banana 
1  Apple 
1  Banana 
0  Strawberry 
1  Apple 
0  Coconut 
1  Peach 

输出应该是:

Apple 2 
Banana 1 
Peach 1 

而且不

Apple 2 
Banana 1 
Peach 1 
Strawberry 0 
Coconut 0 
+1

你也可以aggreagte和子集:'X < - 骨料(时间〜节点,DF,FUN =总和); X [X $时间> 0,]' –

+0

或者可能是一个更规范的欺骗[** **这里(http://stackoverflow.com/questions/1195826/dropping-factor-levels-in-a-subsetted-data -frame-in-r)用几种方法删除未使用的级别。 – Henrik

+0

或者只是为了好玩'library(data.table); setDT(d),和(时间)和(时间)> 0],keyby =节点]' –

回答

0

你可以使用droplevels到REM OVE而factor可变Nodelevels子集划分

summary(droplevels(d[d$Time=="1", ]$Node)) 
# Apple Banana Peach 
# 2  1  1 

或者

summary(factor(d[d$Time=='1', ]$Node))