R:如何从一列中创建额外的行?

标签 r dataframe

我有一个人手的数据集,目前一个人被定义为一个单一的观察。我想 reshape 数据框以将手作为个人观察结果。我尝试了一些带有“dplyr”包和“收集”功能的东西,但完全没有成功。

因此,每个人都在一行中:

id Gender Age   Present_R    Present_L    Dominant
1    F     2      TRUE         TRUE          R
2    F     5      TRUE         FALSE         L
3    M     8      FALSE        FALSE         R

为此,每只手都在一行上:

id Gender Age   Hand    Present  Dominant
1    F     2     R       TRUE     TRUE
2    F     2     L       TRUE     FALSE
3    F     5     R       TRUE     FALSE
4    F     5     L       FALSE    TRUE
5    M     8     R       FALSE    TRUE
6    M     8     L       FALSE    FALSE

请注意,手的优势变得合乎逻辑。

最佳答案

我们可以收集成'long'格式,排列按'id',然后通过unlist创建'Dominant'通过删除 'Hand' 列的子字符串呈现'列,'Hand'

library(tidyverse)
gather(df1, Hand, Present, Present_R:Present_L) %>%
   arrange(id) %>%
   mutate(Dominant = unlist(df1[c("Present_L", "Present_R")]),
          id = row_number(),
          Hand = str_remove(Hand, ".*_"))
#   id Gender Age Dominant Hand Present
#1  1      F   2     TRUE    R    TRUE
#2  2      F   2    FALSE    L    TRUE
#3  3      F   5    FALSE    R    TRUE
#4  4      F   5     TRUE    L   FALSE
#5  5      M   8     TRUE    R   FALSE
#6  6      M   8    FALSE    L   FALSE

根据 OP 的评论,我们似乎需要将“主导”与“手”进行比较

gather(df1, Hand, Present, Present_R:Present_L) %>%
    arrange(id) %>% 
    mutate(id = row_number(),
           Hand = str_remove(Hand, ".*_"),
           Dominant = Dominant == Hand)
#   id Gender Age Dominant Hand Present
#1  1      F   2     TRUE    R    TRUE
#2  2      F   2    FALSE    L    TRUE
#3  3      F   5    FALSE    R    TRUE
#4  4      F   5     TRUE    L   FALSE
#5  5      M   8     TRUE    R   FALSE
#6  6      M   8    FALSE    L   FALSE

关于R:如何从一列中创建额外的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53998913/

相关文章:

r - 如何合并 R 中的两列?

r - 无法理解 stack() 的工作原理

python - 在数据框数据上调用函数

python Pandas : how to fast process the value in columns

python - 使用 dataframe2 中设置的条件从 dataframe1 中提取值(pandas,python)

python-3.x - Pandas:在分隔符关键字后开始和停止解析

list - R中数据框中的列表列

r - 当 parse=TRUE 时将 geom_text 更改为粗体

R react 值 - 添加到列表中的唯一值

r - R在什么情况下回收?