首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用R中缺失的数据填充数据

用R中缺失的数据填充数据
EN

Stack Overflow用户
提问于 2022-05-13 02:47:04
回答 2查看 42关注 0票数 1

我有一个代码,计算10x10的每个象限有多少点,并在每个象限中显示结果。

我有这个数据

代码语言:javascript
复制
      qx    qy     n
   <dbl> <dbl> <int>
 1    10    80     1
 2    10    90     1
 3    20    20     1
 4    20    30     1
 5    20    40     1
 6    20    60     3
 7    30    10     2
 8    30    20     1
 9    30    30     1
10    30    40     2
# ... with 38 more rows

我就是这样创建图形的

代码语言:javascript
复制
ggplot() +
    scale_x_continuous(breaks = seq(0, 100, by = 10)) +
    scale_y_continuous(breaks = seq(0, 100, by = 10)) +
    geom_text(data=df, mapping=aes(x=qx-5, y=qy-5, label=n, size=1))

如何将丢失的象限添加到数据帧中?

失踪象限:

代码语言:javascript
复制
 10    10     0
 20    10     0
 70    10     0
 ...etc
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-13 03:12:30

用所有网格位置创建一个新的空数据框架,然后用已知的值填充可能会更容易。

详情见评论:

代码语言:javascript
复制
library(dplyr)
#create default matrix with all grid locations
qx <- rep(seq(10, 90, 10), each=9)
qy <- rep(seq(10, 90, 10), 9)
empty <- data.frame(qx, qy)

data<- read.table(header=TRUE, text=" qx    qy     n
 1    10    80     1
 2    10    90     1
 3    20    20     1
 4    20    30     1
 5    20    40     1
 6    20    60     3
 7    30    10     2
 8    30    20     1
 9    30    30     1
10    30    40     2")

#merge the known data with the master matrix
answer <-left_join(empty, data, by=c("qx"="qx", "qy"="qy"))
#replace NA with 0
answer$n[is.na(answer$n)] <-0
票数 2
EN

Stack Overflow用户

发布于 2022-05-13 04:07:49

按照与@Dave2e相同的逻辑,我首先使用tidyverse为网格位置创建包含所有组合的数据,然后加入数据,将NA值替换为0,然后绘制。由于我只使用数据的一个子集,那么值将不与问题中的网格相同。

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

crossing(qx = seq(10, 100, 10), qy = seq(10, 100, 10)) %>% 
  left_join(., df, by = c("qx", "qy")) %>% 
  mutate(n = replace_na(n, 0)) %>% 
  ggplot(.) +
  scale_x_continuous(breaks = seq(0, 100, by = 10)) +
  scale_y_continuous(breaks = seq(0, 100, by = 10)) +
  geom_text(mapping = aes(x = qx - 5, y = qy - 5, label = n, size = 1))

输出

数据

代码语言:javascript
复制
df <- structure(list(qx = c(10L, 10L, 20L, 20L, 20L, 20L, 30L, 30L, 
30L, 30L), qy = c(80L, 90L, 20L, 30L, 40L, 60L, 10L, 20L, 30L, 
40L), n = c(1L, 1L, 1L, 1L, 1L, 3L, 2L, 1L, 1L, 2L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72223936

复制
相关文章

相似问题

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