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