在R中选择一系列行

rta7y2nd  于 2023-03-20  发布在  其他
关注(0)|答案(2)|浏览(179)
df <- data.frame('n' = integer())
df['A', 1] <- 2
df['B', 1] <- 5
df['C', 1] <- 3
df['D', 1] <- 8
df['E', 1] <- 4
df['F', 1] <- 6
df['G', 1] <- 9

如何选择行D到F?我可以只执行df[c('D', 'E', 'F'), 1],但实际使用的 Dataframe 有数百行,因此我不想手动键入每行名称。我尝试了df['D':'F', 1]df[c('D':'F'), 1],但它们抛出错误。

kx7yvsdv

kx7yvsdv1#

一种方法是获取从位置D到位置F的序列,并使用该序列进行索引:

f <- \(n,r1,r2) seq(which(n==r1), which(n==r2))

df[f(rownames(df),"D", "F"),,drop=F]

输出:

n
D 8
E 4
F 6

根据您实际的大型数据集,可能有不同的方法来处理此问题。

ugmeyewa

ugmeyewa2#

如果你要找的字母是一个连续的集合,并且行是按顺序排列的,那么@langtang的答案是好的;如果它们没有按顺序排列,或者如果你想增加要拉取的行,那么这可能是一个更灵活的选择。
基本上:
1.建立一个你要找的字母的向量。
1.使用dplyr::filter()选择它们
库(dplyr)
letter_sel〈- c(字母[哪些(字母==“D”):哪些(字母==“F”)],“G”)
筛选器(df,行名称(df)%在% letter_sel中)

相关问题