我有以下数据:
varnames<-c( "aR.0", "aL.0", "aR.1", "aL.1", "aR.3", "aL.3")
a <-matrix (c(1,2,3,4, 5, 6), 2, 6)
colnames (a)<-varnames
df<-as.data.frame (a)
a
aR.0 aL.0 aR.1 aL.1 aR.3 aL.3
[1,] 1 3 5 1 3 5
[2,] 2 4 6 2 4 6
我需要在dataframe中添加包含变量对最大值的向量,其中有:
在几行代码中,如下所示:
df$max.a.0 <- pmax(df [,"aR.0"], df[,"aL.0"])
df$max.a.1<-pmax(df [,"aR.1"], df[,"aL.1"])
df$max.a.3<- pmax(df [,"aR.3"], df[,"aL.3"])
df
aR.0 aL.0 aR.1 aL.1 aR.3 aL.3 max.a.0 max.a.1 max.a.3
1 1 3 5 1 3 5 3 5 5
2 2 4 6 2 4 6 4 6 6
如何自动执行此任务?我绞尽脑汁想写一个循环,但没有成功。
先谢谢你
发布于 2013-04-26 11:29:43
好吧,具体情况取决于您的dataframe的特定属性,从您给出的示例中可以看出这一点并不明显。例如,您指定基应该是相似的,但是只有一个基"a“。也不清楚这些变量的顺序是否总是相同的。
无论如何,对于当前的示例,以下方法可能有效:
df1 <- df[,grep("aR\\..",colnames(df))]
df2 <- df[,grep("aL\\..",colnames(df))]
pmax(df1,df2)
您可以通过以下方法将相同的逻辑扩展到一般情况:(1)使正则表达式更加复杂(例如,包含其他基)和(2),在必要时对列向量进行排序,以实现pmax()
函数所需的相同顺序。
https://stackoverflow.com/questions/16234328
复制相似问题