簡體   English   中英

將列添加到R中的數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM