首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将单个单元格数据透视

如何将单个单元格数据透视
EN

Stack Overflow用户
提问于 2020-12-29 20:49:48
回答 2查看 46关注 0票数 1

我遇到了这样一个简单的挑战,但却不知道如何正确地做到这一点。

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


# I have this single-cell dataframe

tibble::tribble(~red,
                "apple")

## # A tibble: 1 x 1
##   red  
##   <chr>
## 1 apple

但是,作为red是变量fruit的一个属性,apple是它的一个观察对象。因此,我希望我的数据看起来像:

代码语言:javascript
复制
# Desired Output:

## # A tibble: 1 x 2
##   fruit red  
##   <chr> <lgl>
## 1 apple TRUE 

因此,我尝试了一种笨拙的方法,这似乎不是最佳实践:

代码语言:javascript
复制
tibble::tribble(~red,
                "apple") %>%
  mutate(is_red = TRUE) %>%
  rename(fruit = red, red = is_red)

有什么合适的方法吗?也许是通过旋转而不是变异和重命名?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-29 20:54:09

在R基,你会做:

代码语言:javascript
复制
table(stack(df))>0
       ind
values   red
  apple TRUE

如果你需要它作为数据文件:

代码语言:javascript
复制
as.data.frame.matrix(table(stack(df)) > 0)
       red
apple TRUE

请注意,即使您有多种颜色和水果,这也是可行的:例如:

代码语言:javascript
复制
df1=data.frame(red= 'apple', green = 'apple', orange = 'orange', yellow = 'banana') 

as.data.frame.matrix(table(stack(df1)) > 0)
         red green orange yellow
apple   TRUE  TRUE  FALSE  FALSE
banana FALSE FALSE  FALSE   TRUE
orange FALSE FALSE   TRUE  FALSE
票数 3
EN

Stack Overflow用户

发布于 2020-12-29 20:51:37

我们可以使用pivot_longermutate将“红色”转换为逻辑TRUE

代码语言:javascript
复制
library(dplyr)
library(tidyr)
df1 %>%
    pivot_longer(everything(), names_to = names(.), values_to = 'fruit') %>%
     mutate(!! names(df1) := TRUE)

-output

代码语言:javascript
复制
# A tibble: 1 x 2
#  red   fruit
#  <lgl> <chr>
#1 TRUE  apple

或者另一个选择是cur_column

代码语言:javascript
复制
df1 %>% 
  mutate(across(everything(), ~cur_column(), .names = "fruit"),
         !! names(df1) := TRUE)
# A tibble: 1 x 2
#   red   fruit
#   <lgl> <chr>
#1 TRUE  red  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65498598

复制
相关文章

相似问题

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