我正在做一个"介绍r"来自edx并且无法理解某些东西。 这是我的数据帧,名为planets_df:
name type diameter rotation has_rings
1 Mercury Terrestrial planet 0.382 58.64 FALSE
2 Venus Terrestrial planet 0.949 -243.02 FALSE
3 Earth Terrestrial planet 1.000 1.00 FALSE
4 Mars Terrestrial planet 0.532 1.03 FALSE
5 Jupiter Gas giant 11.209 0.41 TRUE
6 Saturn Gas giant 9.449 0.43 TRUE
7 Uranus Gas giant 4.007 -0.72 TRUE
8 Neptune Gas giant 3.883 0.67 TRUE
我想从第三行"地球"中选择直径和旋转列的元素。
我知道我可以做到这一点earth_data <- planets_df[3,c("diameter", "rotation")]
然而,我想我也可以通过以下方式选择该行:
earth_data <- planets_df[c("name"["Earth"]),c("diameter", "rotation")]
但是这给了我:
diameter rotation
NA NA NA
但是我不明白为什么会这样,我想因为你可以按名字选择列,你也可以用同样的方式选择行。有人可以解释一下为什么会这样吗?
答案 0 :(得分:1)
您的代码中存在问题:
new <- b[b$ID %in% a$ID, ]
cbind(ID = a$ID, a[-1] + new[-1])
# ID a b c
#1 A 9 7 18
#2 B 11 6 7
#3 Z 7 17 21
#4 H 45 56 17
您想要的是获取“名称”列中包含“地球”的所有行。 这是通过以下方式实现的:
earth_data <- planets_df[c("name"["Earth"]),c("diameter", "rotation")]
所以完整的一行是:
planets_df[planets_df[,"name"] =="Earth",]