r - 当 R 中粘贴的列中存在 NA 时,将粘贴的列值设为 NA

标签 r dataframe

我有类似于以下的数据:

a<-data.frame(pig=c(NA,"a","b","c",NA),cow=c(NA,"101","112","77",NA),chicken=c("Sep",NA,"Oct","Nov",NA),stringsAsFactors=FALSE)
print(a)
pig  cow chicken
<NA> <NA>   Sep
 a  101    <NA>
 b  112     Oct
 c   77     Nov
<NA> <NA>  <NA>

我试图将列粘贴在一起并获得 NA 如果任何粘贴列中存在任何 NA 以进行给定的观察,例如:
pig  cow chicken   rooster
<NA> <NA>   Sep     <NA>
 a   101    <NA>    <NA>
 b   112    Oct   b-112-Oct
 c   77     Nov   c-77-Nov
<NA> <NA>   <NA>    <NA>

我使用了以下
a$rooster<-paste(a$pig,a$cow,a$chicken,sep="-")

这会产生包含 NA 作为字符串一部分的字符串,这并不理想。我看到的文档没有明确解决这个问题,例如:suppress NAs in paste()有什么想法吗?谢谢!

最佳答案

stringr::str_c有“传染性”NA

paste('a', 'b', NA)
#> [1] "a b NA"

stringr::str_c('a', 'b', NA)
#> [1] NA

关于r - 当 R 中粘贴的列中存在 NA 时,将粘贴的列值设为 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48433514/

相关文章:

r - 如何在 R 中按组同时计算平均值、CV 和标准差

r - [R]中的一键编码分类到虚拟变量

R Shiny 可折叠侧边栏

python - 如何将格式应用于 groupby 函数?

r - 如何在 R 中进行子集化后删除列表中的空 data.frame

python - Pandas 将行转换为列

r - 在 Shiny 中从 renderDataTable() 下载过滤后的数据

r - 润滑不匹配的索引类

python - Pandas 键列表列和值列表列到字典列表列

python - pandas回填并填充不同的值