用带标签的增量键替换 NA 值

标签 r dataframe dplyr

如何用带标签的增量键替换 NA 值?

玩具数据框:

data1 <- c(22,40,72,41,66,66,66)
key <- c(NA,"other",0,0,"other",0,"other")

df<- data.frame(data1,key)
df[df == 0] <- NA

我的 friend :

 data1   key
1    22  <NA>
2    40 other
3    72  <NA>
4    41  <NA>
5    66 other
6    66  <NA>
7    66 other

我使用 dplyr 包制作 key 做了什么

library (dplyr)
df %>% mutate(key = paste0('id-', 1:n()))

我的结果:

  data1  key
1    22 id-1
2    40 id-2
3    72 id-3
4    41 id-4
5    66 id-5
6    66 id-6
7    66 id-7

我想要的:保持“他人”的值(value)观

 data1   key
1    22  id-1
2    40 other
3    72  id-2
4    41  id-3
5    66 other
6    66  id-4
7    66 other

最佳答案

首先将 df$key 转换为字符:

df$key <- as.character(df$key)

然后

df$key[is.na(df$key)] <- paste0('id-', 1:length(df$key[is.na(df$key)]))



> df$key
[1] "id-1"   "other" "id-2"   "id-3"   "other" "id-4"   "other"

或者,使用 dplyr:

library(dplyr)
df %>% 
  mutate(key = as.character(key),
         key = ifelse(is.na(key), paste0('id-', 1:length(key[is.na(key)])),
                      key))

关于用带标签的增量键替换 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37590063/

相关文章:

r - 使用 R 包安装可执行脚本

r - Foreach 和 doparallel 而不是 R 中的 for 循环

r - 按因子过滤后如何删除未使用的级别?

r - 从 R 中以 Word 格式将数据导出到表格

python - Pandas 如何删除列中的单元格并将列向上移动?

R lag/lead - 如何忽略现有行之前和之后的行

python - 为什么 df[[2,3,4]][2 :4] works and df[[2:4]][2:4] does not in Python

r - 在 R:子集或 dplyr::filter 中带有来自向量的变量

r - 根据字符串值汇总数据框

r - 条件增量 tidyverse