【发布时间】:2015-02-18 17:28:17
【问题描述】:
简介
一个数据集有大量的age.year 变量:age.1990, age.1991, etc. 我有一个字符串值数组length(age.years) 代表这些变量,这样age.years[1] 返回"age.1990" 等。
需要
我想搜索每条记录的age.year 变量以找到值60。最终,如果 age.1991[1] 等于 60,那么新变量 Y.60[1] 将采用值 Y.1991[1]。
问题
如何使用数组中的字符串作为变量名以避免手动编码每个var.year 变量? Get() 似乎不起作用。
# EXAMPLE CODE
big.data= data.frame(ID= c(1,2), age.1990= c(60, NA),
age.1991= c(61, 60), age.1992= c(62, 61), Y.1990= c(100, 120),
Y.1991= c(NA, 125), Y.1992= c(115, 130), Y.60= c(NA, NA) )
big.data
# ID age.1990 age.1991 age.1992 Y.1990 Y.1991 Y.1992 Y.60
# 1 1 60 61 62 100 NA 115 NA
# 2 2 NA 60 61 120 125 130 NA
age.years = names(big.data)[2:4]
Y.years = names(big.data)[5:7]
age.years[1]= paste0("big.data$", age.years[1])
age.years[1]
# [1] "big.data$age.1990"
summary(age.years[1])
# Length Class Mode
# 1 character character
summary(get(age.years[1]))
# Error in get(age.years[1]) : object 'big.data$age.1990' not found
# Why not found??
【问题讨论】:
-
试试
big.data[[age.years[1]]]。双括号按名称或编号查找单个列。 -
只是好奇,我添加了您的编辑并获得了应有的信任,而您删除了答案标记。你还需要这个问题的帮助吗?或者也许编辑取消了它?不能说我对 SO 还不陌生,所以我很好奇。
-
供以后参考。如果问题确实得到了解决,那么标记它的好处是它不再出现在“未回答的问题”部分中,无论如何 R 都相当拥挤。但一定要找到自己的方式。