R:迭代添加新列
R: Adding new columns iteratively
我正在尝试编写一个代码,它按行和迭代地评估我的数据框的 3 列,并生成一个具有评估中找到的最小值的新列。这是我的数据:
mydata
Jan Feb Mar Apr May Jun Jul Aug
1 .25 .50 .50 .25 .75 .50 .25 .25
2 .75 .25 .75 .50 .25 .50 .50 .50
3 .50 .50 .50 .50 .25 .25 .75 .25
4 .25 .75 .75 .50 .75 .75 .75 .75
这就是我想要制作的:
mydata
Jan Feb Mar Apr May Jun Jul Aug -Mar ... -Aug
1 .25 .50 .50 .25 .75 .50 .25 .25 .25 ... .25
2 .75 .25 .75 .50 .25 .50 .50 .50 .25 ... .50
3 .50 .50 .50 .50 .25 .25 .75 .25 .50 ... .25
4 .25 .75 .75 .50 .75 .75 .75 .75 .25 ... .75
-Mar 显示 (Jan:Mar) 的最小值,-Apr 显示 (Feb:Apr) 的最小值,依此类推。
我尝试了以下方法:
> for (i in 3:8)
{
Newcolname <- as.name(paste("-",i,sep=""))
mydata$Newcolname<- pmin(mydata[,i-2],mydata[,i-1],mydata[,i])
}
但这只给出了我的 1 个新列,其中包含 (jun:aug) 的最小值,是 mydata 的最后 3 列。我想要的是上面描述的 5 个新列,但我不知道该怎么做。有人吗?
如果我不清楚,请告诉我。提前致谢!
你可以试试这个:
for (i in 3:8) {
Newcolname <- paste0("-", names(mydata)[i])
mydata[[Newcolname]] <- pmin(mydata[,i-2],mydata[,i-1],mydata[,i])
}
其中 names(mydata)[i]
是 mydata 中的第 i 个名称,例如names(mydata)[3]
是 Mar
。要创建新列,您必须将变量放入 [[ ]]
。按照您的方式,它创建了一个名为 Newcolname
.
的新列
我正在尝试编写一个代码,它按行和迭代地评估我的数据框的 3 列,并生成一个具有评估中找到的最小值的新列。这是我的数据:
mydata
Jan Feb Mar Apr May Jun Jul Aug
1 .25 .50 .50 .25 .75 .50 .25 .25
2 .75 .25 .75 .50 .25 .50 .50 .50
3 .50 .50 .50 .50 .25 .25 .75 .25
4 .25 .75 .75 .50 .75 .75 .75 .75
这就是我想要制作的:
mydata
Jan Feb Mar Apr May Jun Jul Aug -Mar ... -Aug
1 .25 .50 .50 .25 .75 .50 .25 .25 .25 ... .25
2 .75 .25 .75 .50 .25 .50 .50 .50 .25 ... .50
3 .50 .50 .50 .50 .25 .25 .75 .25 .50 ... .25
4 .25 .75 .75 .50 .75 .75 .75 .75 .25 ... .75
-Mar 显示 (Jan:Mar) 的最小值,-Apr 显示 (Feb:Apr) 的最小值,依此类推。
我尝试了以下方法:
> for (i in 3:8)
{
Newcolname <- as.name(paste("-",i,sep=""))
mydata$Newcolname<- pmin(mydata[,i-2],mydata[,i-1],mydata[,i])
}
但这只给出了我的 1 个新列,其中包含 (jun:aug) 的最小值,是 mydata 的最后 3 列。我想要的是上面描述的 5 个新列,但我不知道该怎么做。有人吗?
如果我不清楚,请告诉我。提前致谢!
你可以试试这个:
for (i in 3:8) {
Newcolname <- paste0("-", names(mydata)[i])
mydata[[Newcolname]] <- pmin(mydata[,i-2],mydata[,i-1],mydata[,i])
}
其中 names(mydata)[i]
是 mydata 中的第 i 个名称,例如names(mydata)[3]
是 Mar
。要创建新列,您必须将变量放入 [[ ]]
。按照您的方式,它创建了一个名为 Newcolname
.