w****3 发帖数: 1 | 1 如果我有一个sample dataframe如下
# sample dataframe
g <- c(0,7,7,9,2,4,5,1,6,4)
n1 <- c(3,4,1,7,3,2,7,8,4,3)
n2 <- c(5,9,6,8,5,6,0,9,5,7)
n3 <- c(7,2,1,4,8,0,9,3,8,4)
# ......
# ......
n100 <- c(8,6,8,2,4,8,7,4,8,6)
p1 <- c(2,1,6,8,3,9,1,9,2,1)
p2 <- c(1,3,9,9,7,9,7,9,3,7)
sample <- data.frame(g,n1,n2,n2,n100,p1,p2)
现在需要根据p1,p2和n1,n2,…,n100计算一列q。例如,
q列的第1行=n2+n1=5+3=8。因为p1的第1行是2,p2的第1行是1.
q列的第2行=n1+n3=4+2=6。因为p1的第2行是4,p2的第2行是2.
……
以此类推。
请问,这个q列应该怎么算呢?
我用到了melt,但是似乎还没有结束。
library(reshape2)
melt.sample <- melt(sample,id='g') | W**o 发帖数: 547 | 2 自定义一个函数,输入是一个长度为102的vector, 即只处理一行。
然后做一个matrix 然后apply一下。
你的问题描述里面好像有错 | t*****w 发帖数: 254 | 3 不知melt功能。但知道你的核心问题是convert character string into variable
name.
【在 w****3 的大作中提到】 : 如果我有一个sample dataframe如下 : # sample dataframe : g <- c(0,7,7,9,2,4,5,1,6,4) : n1 <- c(3,4,1,7,3,2,7,8,4,3) : n2 <- c(5,9,6,8,5,6,0,9,5,7) : n3 <- c(7,2,1,4,8,0,9,3,8,4) : # ...... : # ...... : n100 <- c(8,6,8,2,4,8,7,4,8,6) : p1 <- c(2,1,6,8,3,9,1,9,2,1)
| a*****V 发帖数: 1 | 4 X=cbind(n1,...,n100)
q=c()
for(i in 1:dim(X)[1]) q=c(q,X[i,p1[i]]+X[i,p2[i]]) |
|