首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用标签替换NA值

用标签替换NA值
EN

Stack Overflow用户
提问于 2016-06-02 11:04:54
回答 2查看 361关注 0票数 2

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

玩具data.frame:

代码语言:javascript
复制
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

我的d.f:

代码语言:javascript
复制
 data1   key
1    22  <NA>
2    40 other
3    72  <NA>
4    41  <NA>
5    66 other
6    66  <NA>
7    66 other

我用dplyr包做了什么

代码语言:javascript
复制
library (dplyr)
df %>% mutate(key = paste0('id-', 1:n()))

我的研究结果:

代码语言:javascript
复制
  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

我想要的:保持“别人”的价值观

代码语言:javascript
复制
 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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-02 11:10:58

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

代码语言:javascript
复制
df$key <- as.character(df$key)

然后

代码语言:javascript
复制
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:

代码语言:javascript
复制
library(dplyr)
df %>% 
  mutate(key = as.character(key),
         key = ifelse(is.na(key), paste0('id-', 1:length(key[is.na(key)])),
                      key))
票数 4
EN

Stack Overflow用户

发布于 2016-06-02 11:16:58

使用累积量和变异:

代码语言:javascript
复制
library(dplyr)
df %>% 
  mutate(key = ifelse(is.na(key), paste("id", sep = "-", cumsum(is.na(key))),
                      as.character(key)))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37590063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档