簡體   English   中英

根據dataframe行創建列

[英]Create column based on rows of dataframe

我有一個數據框。 我正在嘗試創建一個虛擬變量,該變量最多為給定行的3列。

for(i in 1:nrow(data))
{
  data[i,]$max_metric <- max(data[i,]$a,
                             data[i,]$b,
                             data[i,]$c)
}

這段代碼有效,但絕對不是最好的方法。 有沒有其他方法可以做到這一點?

使用pmax ,它采用傳遞給它的所有參數的元素最大值。 但是,這意味着您不能只傳遞整個data.frame。

# this won't work because data[,c("a","b","c")] is one argument
data$max_metric <- pmax(data[,c("a","b","c")])

但是你可以通過data.frame的每一列pmax通過do.call因為第二個參數do.call應該是一個清單,data.frames是列表(某些屬性)。

data$max_metric <- do.call(pmax, data[,c("a","b","c")])
# if you want na.rm=TRUE
data$max_metric <- do.call(pmax, c(data[,c("a","b","c")],list(na.rm=TRUE)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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