我有一个数据框,其中列按字母顺序排列(COL_A、COL_B、COL_C 等)。如何在不显式写出列名或不计算有多少列的情况下,将列 H 子集化到 M?
为澄清而编辑:我并不是说这些列正好是 COL_A、COL_B 等等,只是它们按字母顺序排列,具有名称字符串中的任何通用结构。例如,它们可以是阿拉巴马州、阿肯色州、德克萨斯州、怀俄明州和赞比亚。简而言之,我试图找到 df_subset = df[,n1:n2]
的替代方法,我可以直接输入列名,而不必计算出列号 n1 和 n2。
最佳答案
更通用的方法是使用 >=
和 <=
应用于列名的运算符。下面是一个使用数据框的示例,其中列名是美国各州:
> df <- data.frame(as.list(state.abb))
> colnames(df) <- state.name
> df[, 1:3]
Alabama Alaska Arizona
1 AL AK AZ
> df[colnames(df) >= "Florida" & colnames(df) <= "Illinois"]
Florida Georgia Hawaii Idaho Illinois
1 FL GA HI ID IL
另一种方法是使用 match
找到两个边界的索引并在这两者之间建立一个序列:
> df[seq(from = match("Florida", colnames(df)),
+ to = match("Illinois", colnames(df)))]
Florida Georgia Hawaii Idaho Illinois
1 FL GA HI ID IL
关于r - 如何从数据框中提取一些按字母顺序排列的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9564731/