[英]Adding a column to a dataframe in R
我有以下數據幀( df
)
start end
1 14379 32094
2 151884 174367
3 438422 449382
4 618123 621256
5 698271 714321
6 973394 975857
7 980508 982372
8 994539 994661
9 1055151 1058824
. . .
. . .
. . .
帶有數值( vec
)的長向量。
我想在每一行添加另一列,其中vec
相應位置的值的平均值。 例如,第一行將具有mean(vec[14379:32094])
。 我嘗試過使用transform
但無法完成這個簡單的任務。
這是apply()
一個非常標准的用例:
R> vec <- 1:10
R> DF <- data.frame(start=c(1,3,5,7), end=c(2,6,7,9))
R> DF$newcol <- apply(DF,1,function(row) mean(vec[ row[1] : row[2] ] ))
R> DF
start end newcol
1 1 2 1.5
2 3 6 4.5
3 5 7 6.0
4 7 9 8.0
R>
如果您願意,也可以使用plyr
,但這里不需要超越基礎R的功能。
即使這是一個7年前的問題,R 新手應該考慮使用data.table ,package。
data.table是一個data.frame,所以你可以為數據框執行所有操作。 但許多人認為數據的速度更快。
vec <- 1:10
library(data.table)
DT <- data.table(start=c(1,3,5,7), end=c(2,6,7,9))
DT[,new:=apply(DT,1,function(row) mean(vec[ row[1] : row[2] ] ))]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.