通过为变量指定长度> 1的向量来子集数据帧

时间:2014-06-22 02:21:42

标签: r

我刚刚开始学习R编程,并且发现了使用以下变量对数据框进行子集化的问题:

> names(data)

[1] "Date"    "sulfate" "nitrate" "ID"  

要获得一个变量的平均值,我只需使用:

  

平均(数据$硫酸盐)

[1] 3.880701

如果我想在变量“ID”为1时变量“sulcate”的平均值,我使用:

  

mean(subset(data,ID == 1)$ sulfate)

     

[1] 3.004444

但是,当ID为1:5的范围时,如果我想要“sulcate”的意思,我会收到错误:

  

mean(subset(data,ID == 1:5)$ sulfate)

     

[1] 3.714615       警告信息:       在ID == 1:5:         较长的物体长度不是较短物体长度的倍数

     

如何指定长度为>的向量? 1(即1:10,5:8),以过滤变量?

1 个答案:

答案 0 :(得分:0)

您希望%in%代替==

mean(subset(data, ID %in% 1:5)$sulfate)

或者也许:

mean(data$sulfate[data$ID %in% 1:5])

该警告意味着当1:5延长到data$ID的长度时,它不会被回收整数次。如果行数可以被5整除,那么结果会更糟。在这种情况下,会以静默方式返回错误的结果。