如何将R语言中基于DataFrame现有列新增多列的语句合并为一句?
合并新增列语句的几种方法
你可以用以下几种方式将两行语句合并为一句,效果和原代码完全一致(仅给pets == "dog"的行赋值,其他行的color和ID列会保留NA):
方法1:使用base R的within()函数
within()可以在数据框的环境内批量操作列,写法清晰直观:
DF <- within(DF, { color[pets == "dog"] <- "red" ID[pets == "dog"] <- 1 })
方法2:直接对数据框子集赋值
通过索引定位目标行和新增列,一次性完成赋值操作:
DF[DF$pets == "dog", c("color", "ID")] <- list("red", 1)
也可以用data.frame格式赋值,可读性更强:
DF[DF$pets == "dog", c("color", "ID")] <- data.frame(color = "red", ID = 1)
方法3:使用tidyverse的dplyr包(需先加载包)
如果习惯tidyverse风格,用mutate()批量生成新列:
library(dplyr) DF <- DF %>% mutate( color = ifelse(pets == "dog", "red", NA), ID = ifelse(pets == "dog", 1, NA) )
注:因为原代码未给非dog行赋值,这里用NA对应原效果,若后续要给其他行赋值,可修改ifelse的第三参数。
内容的提问来源于stack exchange,提问作者ilFonta
相关产品推荐
相关产品推荐

