有没有办法用R中的括号将每一列从一列选择到另一列?
我知道在有没有办法用R中的括号将每一列从一列选择到另一列?,r,R,我知道在subset()中,可以很容易地将每一列从一列开始,以另一列结束 df <- as.data.frame(state.x77) subset(df, Frost > 30, select=Illiteracy:Murder) df 30,选择=文盲:谋杀) 我知道用括号你可以做类似于df[df$Frost>30,3:5] 有没有办法用括号重新创建使用列名的subset语句 你会发现 df <- state.x77 df[df[, "Frost"] > 150,
subset()
中,可以很容易地将每一列从一列开始,以另一列结束
df <- as.data.frame(state.x77)
subset(df, Frost > 30, select=Illiteracy:Murder)
df 30,选择=文盲:谋杀)
我知道用括号你可以做类似于df[df$Frost>30,3:5]
有没有办法用括号重新创建使用列名的subset语句 你会发现
df <- state.x77
df[df[, "Frost"] > 150, c("Illiteracy", "Life Exp", "Murder")]
顺便说一下,state.x77
是一个矩阵,而不是数据帧。作为一个矩阵,你可以使用
df <- state.x77
df[df[, "Frost"] > 150, which(colnames(df)=="Illiteracy"):which(colnames(df)=="Murder")]
df 150,which(colnames(df)=“文盲”):which(colnames(df)=“谋杀”)]
或者作为数据帧
df <- as.data.frame(state.x77)
df[df[, "Frost"] > 150, which(names(df) == "Illiteracy"):which(names(df) == "Murder")]
df150,其中(姓名(df)=“文盲”):其中(姓名(df)=“谋杀”)]
为了产生相同的结果,您可以编写一个函数,使这个函数更漂亮,这是dplyr的另一种方法
library(dplyr)
df = as.data.frame(state.x77)
df %>% filter(Frost > 30) %>% select(Illiteracy:Murder) %>% head()
Illiteracy Life Exp Murder
1 1.5 69.31 11.3
2 1.9 70.66 10.1
3 0.7 72.06 6.8
4 1.1 72.48 3.1
5 0.9 70.06 6.2
6 2.0 68.54 13.9
是否有带括号的
列a
至列B
等效项?我考虑的是有很多很多列的数据帧。@Cauder-我添加了一个列范围dplyr select
应该做的示例。将其与filter
或filter\u组合在一起
library(dplyr)
df = as.data.frame(state.x77)
df %>% filter(Frost > 30) %>% select(Illiteracy:Murder) %>% head()
Illiteracy Life Exp Murder
1 1.5 69.31 11.3
2 1.9 70.66 10.1
3 0.7 72.06 6.8
4 1.1 72.48 3.1
5 0.9 70.06 6.2
6 2.0 68.54 13.9