我试图创建一个循环并搜索一列中的值,然后显示该值所在的所有第一行,我想从 1950 年到 2016 年
Em=
year x y
1950 5 3
1950 4 3
1950 2 4
1950 1 5
1951 6 7
1951 5 6
1951 1 4
1951 0 3
我一直在尝试这个:
for (p in 1:nrow(Em)){
if (Em[p,"year"]==1950)
break
print(Em[p,])} #it is not showing me just the first row that matches
{ else if (Em[p,"year"]==1951)
break
print(Em[p,])}
并获取
year x y
1950 5 3
1951 6 7
最佳答案
使用 Base R 的解决方案:
Em_sub = aggregate(. ~ year, data = Em, '[', 1)
或使用dplyr
:
library(dplyr)
Em_sub = Em %>%
group_by(year) %>%
slice(1)
结果:
year x y
1 1950 5 3
2 1951 6 7
# A tibble: 2 x 3
# Groups: year [2]
year x y
<int> <int> <int>
1 1950 5 3
2 1951 6 7
数据:
Em = read.table(text = "year x y
1950 5 3
1950 4 3
1950 2 4
1950 1 5
1951 6 7
1951 5 6
1951 1 4
1951 0 3", header = TRUE)
关于r - 如何打印包含列的特定值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47059978/