r - 将一列分散到多列中

标签 r function dplyr spread

我有一列“m”,其中包含与一个主题 (ID) 关联的多个值。我需要将此列中的值分散到 5 个不同的列中以获得下面提供的第二个表。我还需要将名称与这些列相关联。

f <- read.table(header = TRUE, text = "
    Scale ID            m
1       1  1    0.4089795
2       1  1  0.001041055
3       1  1    0.1843616
4       1  1   0.03398921
5       1  1        FALSE
6       3  1    0.1179424
7       3  1    0.3569155
8       3  1    0.2006204
9       3  1   0.04024855
10      3  1        FALSE
")  

输出应如下所示

  ID Scale         x           y         z          a     b
1  1     1 0.4089795 0.001041055 0.1843616 0.03398921 FALSE
2  1     3 0.1179424 0.356915500 0.2006204 0.04024855 FALSE

感谢您的帮助!

最佳答案

df <- read.table(header = TRUE, text = "
Scale ID            m
1       1  1    0.4089795
2       1  1  0.001041055
3       1  1    0.1843616
4       1  1   0.03398921
5       1  1        FALSE
6       3  1    0.1179424
7       3  1    0.3569155
8       3  1    0.2006204
9       3  1   0.04024855
10      3  1        FALSE
") 

library(tidyverse)

df %>%
  group_by(Scale, ID) %>%                     # for each combination of Scale and ID
  mutate(names = c("x","y","z","a","b")) %>%  # add column names
  ungroup() %>%                               # forget the grouping
  spread(-Scale, -ID) %>%                     # reshape data
  select(Scale, ID, x, y, z, a, b)            # order columns

# # A tibble: 2 x 7
#   Scale    ID x         y           z         a          b    
#   <int> <int> <fct>     <fct>       <fct>     <fct>      <fct>
# 1     1     1 0.4089795 0.001041055 0.1843616 0.03398921 FALSE
# 2     3     1 0.1179424 0.3569155   0.2006204 0.04024855 FALSE

关于r - 将一列分散到多列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52047027/

相关文章:

r - 如何使用行构建列从宽到长

r - 使用 purrr 映射按列对迭代汇总

r - geom_ribbon 中可能存在的错误

c++ - 如何在 C++ 中调用函数时打印每个函数名称?

r - 使用 dplyr (R) 计算字符串中的唯一单词

r - 如何在特定条件下创建等级变量?

mysql - 使用 ODBC 在 R Markdown 中转义引号以提交 sql

r - 允许使用 slider (或其他 GUI 元素)操作变量的 R 输出设备?

javascript - 重新声明 JavaScript 变量

c - 使用在 main1() 中生成的值并在 main2() 中使用它们