R 数据框 table 将值设置为列

R data frame table set the values into columns

有一个table:

class<-c("A","B", "B","C","D","D","D")
value<-c(1,3,2,5,6,2,5)
df<-cbind(class,value)

例如,class中的“B”和“C”有多个值。我想将 class 的每个值设置到一个单独的列中。我想获得以下输出:

你能帮帮我吗?

提前致谢, 最好的祝福, 伊娜

这可能有帮助:

首先,使用 data.frame()

将其设为数据框
class <- c("A","B", "B","C","D","D","D")
value <- c(1,3,2,5,6,2,5)
df <- data.frame(class,value)

# A bunch of packages that might help you.
library(tidyverse)

df %>%
    group_by(class) %>%
    mutate(new_names = paste0("value", 1:n())) %>%
    pivot_wider(names_from = new_names)

输出:

# A tibble: 4 x 4
# Groups:   class [4]
  class value1 value2 value3
  <chr>  <dbl>  <dbl>  <dbl>
1 A          1     NA     NA
2 B          3      2     NA
3 C          5     NA     NA
4 D          6      2      5

(我不会放 0 - NA 是如果缺少某个值的具体解决方案)

您可以使用 splitrbind 并用 lapply[ 填充缺少的部分:

x <- split(df[,2], df[,1])
do.call("rbind", lapply(x, "[", 1:max(lengths(x))))
#  [,1] [,2] [,3]
#A "1"  NA   NA  
#B "3"  "2"  NA  
#C "5"  NA   NA  
#D "6"  "2"  "5"