簡體   English   中英

R條件替換數據幀值

[英]R conditional replacement data frame values

我想通過對一個或多個其他列(df $ b,df $ c)進行數學運算的結果來更新dataframe列(df $ d),但要以另一列(df $ a)的值為條件。

set.seed(55)
df <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10), d = 0)
df$d[df$a > 0] <- df$b[df$a > 0] / df$c[df$a > 0]

第三行產生df $ d的期望值。 有沒有一種方法可以更簡潔地寫出來? 我對不需要我重復邏輯索引的選項特別感興趣。

例如,這種表達方式可在Python / Pandas中使用,並且只需要賦值運算符左側的一個'[df $ a> 0]'實例:

df$d[df$a > 0] <- df$b / df$c

感謝您提供的所有建議。

使用data.table代替,您的生活會更好:

library(data.table)
dt = data.table(df) # or construct it same way: dt = data.table(a = rnorm(10),...)

dt[a > 0, d := b/c]

嘗試這個:

transform(df, d = ifelse(a > 0, b/c, d))
transform(df, d = b / c * (a > 0))

會成功的 該解決方案依賴於柱的存在d 因此,您不需要用零初始化列。

暫無
暫無

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

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