首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:重新思考数据(我如何在一组列中重新排列一列?)

R:重新思考数据(我如何在一组列中重新排列一列?)
EN

Stack Overflow用户
提问于 2021-09-15 16:13:52
回答 2查看 71关注 0票数 3

我的桌子是这样的:

代码语言:javascript
复制
  A   B    C
1 a   b'   1
2 a   b'   2
3 a   b''  3
4 a2  b1   1
5 a3  b2   3

例如:列A-是一个属(如E.)B列是一种(大肠杆菌),C列是该物品的一类(不含金属)

因此,我需要理解,有多少类(B)包括:

代码语言:javascript
复制
  A  B   C1 C2 C3
1 a  b'  +  +  -
2 a  b'' -  -  +
3 a2 b1  +  -  -
4 a3 b2  -  -  +
EN

回答 2

Stack Overflow用户

发布于 2021-09-15 16:24:41

使用tidyverse

代码语言:javascript
复制
df <- data.frame(A = c('a','a','a','a2','a3'), 
                 B = c("b'", "b'", "b''", "b1", "b2"),
                 C = c(1,2,3,1,3))

df %>%
  mutate( C = paste("C",C, sep = ""),
          D = "+") %>%
  pivot_wider(names_from = C, values_from = D, values_fill = "-")

首先创建data.frame,然后实际创建C1C2C3。您请求了一个+/-系统,所以我将一个+放在它存在的位置,当我pivot_wider时也是如此。现在,pivot_wider将以+NA值结束;因此,要对其进行更正,请使用values_fill =选项并将其设置为-

代码语言:javascript
复制
# A tibble: 4 x 5
  A     B     C1    C2    C3   
  <chr> <chr> <chr> <chr> <chr>
1 a     b'    +     +     -    
2 a     b''   -     -     +    
3 a2    b1    +     -     -    
4 a3    b2    -     -     +    
票数 2
EN

Stack Overflow用户

发布于 2021-09-15 16:37:59

使用dcast

代码语言:javascript
复制
library(data.table)
dcast(setDT(df)[, tmp := "+"], A + B ~ paste0("C", C), value.var = "tmp", fill = "-")
    A   B C1 C2 C3
1:  a  b'  +  +  -
2:  a b''  -  -  +
3: a2  b1  +  -  -
4: a3  b2  -  -  +
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69196589

复制
相关文章

相似问题

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