我有一个 R 数据框mydata
,其中包含特定年龄和特定身高的人数。因此,在数据框中,我有变量mydata$ageto10
(= 10 岁以下的人数)、mydata$ageto20
(= 20 岁以下的人数)等等,年龄分别为 35、42 和 65 岁。同样如此对于高度(以及其他几个变量)。
我想创建新变量,这些变量指的是年龄范围 10 到 25、年龄范围 25 到 35、35 到 42 和 42 到 65 内的人数。所以对于第一种情况,我想做:
mydata$age10to25 <- mydata$ageto25 - mydata$ageto10
这可行,但我想在所有范围内执行此操作,并对高度和其他变量执行相同操作。一定有比复制粘贴这 40 次并手动更改变量名更简单的方法!:)
我认为它应该是这样的:
for (i in c("age", "height"))
{
for (k in c(10,20,35,42, 65))
{
assign(paste("mydata$", i, k, "to", <<next k here>>, sep=""), get(paste("mydata$", i, <<next k here>>, , sep="")) - get(paste("mydata$", i, k, , sep=""))
}
}
但显然这不起作用(即使我手动填写 k ,似乎该assign
命令也不适用于将变量名称分配给当前数据。
最好的方法是什么?