首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的代码中的地图有什么问题吗?

R中的代码中的地图有什么问题吗?
EN

Stack Overflow用户
提问于 2020-02-18 19:07:32
回答 1查看 90关注 0票数 1

我有一个很大的数据库,我无法在这里制作它们。我有两个数据数据库如下所示。

代码语言:javascript
复制
df1 <- read.table(text="A1  B1  C1  D1  E1
1234Z   721 224 223 987L
224 321 224 331 987L
321 321 224 441 141
321 440 456Y    331 141
321 1234Q   456Y    441 321
218 221 456Y    12A 321
218 440 19  223 321
161 1234Q   19  12A 123Q
1234Z   123Q    77  11A 123Q", header=TRUE)

df2 <- read.table(text=" BCG1   BCG2    BCG3    BCG4    BCG5
1   11  13  18  24
4   9   13  19  24
5   9   13  20  22
5   10  14  19  22
5   6   14  20  23
3   8   14  17  23
3   10  12  18  23
2   6   12  17  21
1   7   15  16  21", header=TRUE)

Df1是由df2编码的因子。我使用了以下代码:

代码语言:javascript
复制
df3 <- do.call(cbind.fill, c(Map(function(x,y)
data.frame(col=x,col2=unique(y)),
lapply(df1,unique),split(df2, col(df2))))
names(df3)<-c(rbind(df1), paste0("Zo", seq_along((df1))))

我想要得到下表

代码语言:javascript
复制
A1     BCG1   B1      BCG2   C1      BCG3    D1      BCG4    E1      BCG5
1234Z  1      721     11     224     13      223     18      987L    24
224    4      321     9      456Y    14      331     19      141     22
321    5      221     8      19      12      441     20      321     23
218    3      440     10     77      15      12A     17      123Q    21
161    2      1234Q   6                      11A     16     
              123Q    7                     

我愿意接受其他密码。谢谢你的帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-18 21:33:46

试试看以下几点。

代码语言:javascript
复制
library(dplyr)
library(purrr)

df3 <- c(df1, df2) %>%
  `[`(c(matrix(names(.), nrow = 2, byrow = T))) %>%
  map(~ as.character(unique(.))) %>%
  map_dfc(`[`, 1:max(lengths(.))) %>%
  mutate_all(coalesce, "")

# # A tibble: 6 x 10
#   A1    BCG1  B1    BCG2  C1    BCG3  D1    BCG4  E1    BCG5 
#   <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
# 1 1234Z 1     721   11    224   13    223   18    987L  24   
# 2 224   4     321   9     456Y  14    331   19    141   22   
# 3 321   5     440   10    19    12    441   20    321   23   
# 4 218   3     1234Q 6     77    15    12A   17    123Q  21   
# 5 161   2     221   8     ""    ""    11A   16    ""    ""   
# 6 ""    ""    123Q  7     ""    ""    ""    ""    ""    ""   

结果df3是一个tbl对象,默认情况下空字符串将被打印为""。如果您不想看到引号,有两种选择:

  1. as.data.frame(df3)
  2. print.data.frame(df3)

前者将df3tbl强制转换为data.frame,而后者不改变对象的类。

结果将是

代码语言:javascript
复制
#      A1 BCG1    B1 BCG2   C1 BCG3  D1 BCG4   E1 BCG5
# 1 1234Z    1   721   11  224   13 223   18 987L   24
# 2   224    4   321    9 456Y   14 331   19  141   22
# 3   321    5   440   10   19   12 441   20  321   23
# 4   218    3 1234Q    6   77   15 12A   17 123Q   21
# 5   161    2   221    8           11A   16          
# 6             123Q    7                  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60287858

复制
相关文章

相似问题

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