我尝试使用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
中。如何使用此代码将新变量添加到数据框中,而不是创建小标题?
答案 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)))