首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修补丢失的数据格式值

修补丢失的数据格式值
EN

Stack Overflow用户
提问于 2022-09-26 12:56:38
回答 2查看 27关注 0票数 0

我有一个大数据集,其中包含几个缺失(NA)值。每个品种有3个重复。所以,如果我丢失了1,我可以把其他的2平均起来,用它来替换丢失的1。或者,如果只有一个已知的价值,使用它代替其他。我不知道从哪里开始,但我找到了一个简单的话题,但它适合python (理解https://stackoverflow.com/questions/29359134/in-pandas-how-can-i-patch-a-dataframe-with-missing-values-with-values-from-anot)

下面是一个数据框架示例:

代码语言:javascript
复制
A <- c(1, 1, 1, 5, 5, 5, 8, 8, 8)
B <- c(10, 20, 50, 100, 100, 50, 200, 300)
C <- c(10, 10, 10, 50, 50, 50, 100)
length(A)<-9; length(B)<-9; length(C)<-9
df <-cbind(A,B,C)  

这个想法是用A细胞中的8组B细胞的平均值来填充NA。在C细胞中,NA应由A细胞中仅有的8填充。在真实的数据集中,会有更多的NA组,我只是不知道如何制作这样的df :D

这似乎是一个简单的任务,我只是没有编码知识来解决这个问题。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2022-09-26 13:15:50

我觉得这应该能起作用。请注意,我事先将您的数据转换为数据帧对象。

代码语言:javascript
复制
A <- c(1, 1, 1, 5, 5, 5, 8, 8, 8)
B <- c(10, 20, 50, 100, 100, 50, 200, 300)
C <- c(10, 10, 10, 50, 50, 50, 100)
length(A)<-9; length(B)<-9; length(C)<-9

df <- data.frame(A,B,C)

library(dplyr)

newdf <- df %>% group_by(A) %>% mutate_all( ~ case_when(is.na(.) ~ mean(., na.rm=TRUE),
                                     TRUE ~ .))

mutate_all意味着将对所有列执行操作。如果您只想对某些列执行此操作,则使用mutate_at代替。

票数 0
EN

Stack Overflow用户

发布于 2022-09-26 13:17:49

代码语言:javascript
复制
library(tidyverse)

df %>% 
  group_by(A) %>% 
  mutate(across(everything(), ~ replace_na(.x, mean(.x, na.rm = TRUE))))

# A tibble: 9 × 3
# Groups:   A [3]
      A     B     C
  <dbl> <dbl> <dbl>
1     1    10    10
2     1    20    10
3     1    50    10
4     5   100    50
5     5   100    50
6     5    50    50
7     8   200   100
8     8   300   100
9     8   250   100
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73854505

复制
相关文章

相似问题

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