【发布时间】:2012-10-30 22:14:22
【问题描述】:
我有一个名为 mydata 的 R 数据框,其中包含特定年龄和特定身高的人数。所以在数据框中我有变量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 命令也不适用于将变量名称分配给当前数据。
最好的方法是什么?
【问题讨论】: