【发布时间】:2015-04-29 22:27:19
【问题描述】:
我想通过引用带有字符串的列来对数据框进行子集化,并选择满足条件的该列的值。 从下面的代码
employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
employ.data <- data.frame(employee, salary, startdate)
salary_string <- "salary"
我想通过使用 salary_string 来引用列名来获取所有超过 23000 的工资。
我试过没有成功:
set <- subset(employ.data, salary_string > 23000)
set2 <- employ.data[, employ.data$salary_string > 23000)
这似乎不起作用,因为salary_string 是字符类型,但我需要的是某种“列名对象”。使用 as.name(salary_string) 也不起作用。 我知道我可以通过使用得到子集
set <- subset(employ.data, salary > 23000)
但我的目标是使用字符类型的列名 (salary_string) 一次与子集(employ.data, ... ) 和一次与employ.data[, ...]
【问题讨论】:
-
想解释一下您要达到的目标背后的基本原理吗?
-
我正在创建一个将字符串/字符作为输入的函数,如果输入与列名匹配,则该函数应创建满足条件的列值的子集
-
一个丑陋的选择:
subset(employ.data,eval(parse(text=salary_string)) > 23000) -
@Frank 几乎同时发表了相同的评论;)
-
@Simon,知道了。它让我练习使用 dplyr 编写函数。让我知道是否需要任何提示