将使用mutate_创建的新变量添加到数据框,而不是创建标题

时间:2019-06-21 03:16:59

标签: r dplyr

我尝试使用mutate将新列添加到数据帧中使我对新变量感到不满意,但没有将变量作为新列添加到数据帧中(这是我想要做的)。

我有一个带有字符变量DRUG_GENERIC_NAME的数据帧,并通过组合mutate和str_detect创建了一个新的逻辑变量Ibuprofen,当TRUE时,该变量将为IBUPROFEN包含在DRUG_GENERIC_NAME中:

mutate(Drug_Table, DRUG_GENERIC_NAME, Ibuprofen = str_detect (Drug_Table$DRUG_GENERIC_NAME,"IBUPROFEN", negate = FALSE))

结果是使用新变量Ibuprofen引起麻烦,但是代码未将变量添加到数据帧Drug_Table中。如何使用此代码将新变量添加到数据框中,而不是创建小标题?

2 个答案:

答案 0 :(得分:0)

如果我们不想使用%<>%来分配它,则可以使用magrittr中的复合赋值运算符(<-

library(magrittr)
Drug_Table %<>%
   mutate(Ibuprofen = str_detect(DRUG_GENERIC_NAME,"IBUPROFEN", negate = FALSE))

答案 1 :(得分:0)

正如Calum所建议的那样,您必须使用“ <-”运算符将结果分配给原始数据帧:

Drug_Table <- mutate(Drug_Table, DRUG_GENERIC_NAME, Ibuprofen = str_detect (Drug_Table$DRUG_GENERIC_NAME,"IBUPROFEN", negate = FALSE))

如果您需要数据框仍然是data.frame(而不是小标题),请使用as.data.frame()

Drug_Table <- as.data.frame(mutate(Drug_Table, DRUG_GENERIC_NAME, Ibuprofen = str_detect (Drug_Table$DRUG_GENERIC_NAME,"IBUPROFEN", negate = FALSE)))