我想使用dplyr的mutate_at
函數將函數應用於數據框中的多個列,其中函數輸入直接應用的列以及另一列在數據框中。在dplyr中使用多列函數mutate_at調用
舉一個具體的例子,我想看看發生變異以下數據框
# Example input dataframe
df <- data_frame(x = c(TRUE, TRUE, FALSE),
y = c("Hello", "Hola", "Ciao"),
z = c("World", "ao", "HaOlam")
)
與mutate_at
調用類似於這樣
df %>%
mutate_at(.vars = vars(y, z),
.funs = ifelse(x, ., NA)
)
返回一個數據幀,看起來是這樣的
# Desired output dataframe
df2 <- data_frame(x = c(TRUE, TRUE, FALSE),
y_1 = c("Hello", "Hola", NA),
z_1 = c("World", "ao", NA)
)
期望的mutate_at
通話將類似於以下調用mutate
:
df %>%
mutate(y_1 = ifelse(x, y, NA),
z_1 = ifelse(x, z, NA)
)
我知道,這可以在基礎R以多種方式來完成,但是我特別喜歡用dplyr的mutate_at
功能的緣故來實現這一目標可讀性,與數據庫接口等
下面是問在計算器一些類似的問題,其不地址我在這裏提出的問題:
adding multiple columns in a dplyr mutate call
dplyr::mutate to add multiple values
Use of column inside sum() function using dplyr's mutate() function
'DF%>% mutate_at(VARS(Y,Z), 玩意兒(ifelse(X,。 ,NA)))' – eipi10
@ eipi10啊,好的。因此,如果我在調用'funs()'時實際上包裝了'ifelse(x,。,NA)',上面的代碼就可以工作。謝謝!我檢查了您的解決方案,並且完美地工作。 您的解決方案正是我一直在尋找的! – bschneidr