使用行变量作为 R 中的列

Using row variables as columns in R

我有以下数据:

split2 <-read.csv("C:\Users\Liz\Desktop\R text editing\looped\splitne.csv")
split2

TYPE VALUE Ne 6 CI95(L) 3 CI95(U) 21 Ne 6 CI95(L) 3 CI95(U) 21 Ne 6 CI95(L) 3 CI95(U) 21 Ne 6 CI95(L) 3 CI95(U) 21

我想使用 R 将其转换为以下格式:

Ne CI95(L) CI95(U) 6 3 21 6 3 21 6 3 21 6 3 21 我试过使用 reshape2 包中的 dcast 函数

dcast(split2, TYPE~VALUE)

但是我最终得到了这个,我不知道如何正确分配 value.var 以正确覆盖:

split2$TYPE 3 6 21 1 CI95(L) 4 0 0 2 CI95(U) 0 0 4 3 Ne 0 4 0

我认为我对这个数据集的转换很愚蠢,我也尝试过对数据进行子集化和重新组合,但我似乎也无法让它工作。非常感谢任何帮助或大方向的指示!!

尝试整洁的解决方案。这假设您的 TYPE 值重复:

library("tidyverse")

df <- tribble(
  ~TYPE, ~VALUE,
  "Ne" ,     6,
  "CI95(L)", 3,
  "CI95(U)", 21,
  "Ne"   ,   6,
  "CI95(L)", 3,
  "CI95(U)" ,21,
  "Ne" ,     6,
  "CI95(L)" ,3,
  "CI95(U)", 21,
  "Ne"    ,  6,
  "CI95(L)", 3,
  "CI95(U)", 21
)

df %>% 
  dplyr::mutate(id = cumsum(TYPE=="Ne")) %>%
  tidyr::spread(TYPE,VALUE) %>% 
  dplyr::select(Ne, `CI95(L)`,`CI95(U)`)

# A tibble: 4 x 3
# Ne `CI95(L)` `CI95(U)`
# * <dbl>     <dbl>     <dbl>
# 1     6         3        21
# 2     6         3        21
# 3     6         3        21
# 4     6         3        21

我们需要一个序列列。

library(data.table)
dcast(split2, rowid(TYPE)~TYPE)