Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何根据ID将一列扩展为两列_R_Reshape - Fatal编程技术网

R 如何根据ID将一列扩展为两列

R 如何根据ID将一列扩展为两列,r,reshape,R,Reshape,我想根据ID变量将数据帧的一列扩展为两列 我的数据是这样的 df = data.frame(ID = c("M1", "M2", "M2", "M3", "M4", "M4", "M5"), Core = c("A", "A","B","B","A","B","A")) > df ID Core 1 M1 A 2 M2 A 3 M2 B 4 M3 B 5 M4 A 6 M4 B 7 M5 A 我想根据“I

我想根据ID变量将数据帧的一列扩展为两列

我的数据是这样的

df = data.frame(ID = c("M1", "M2", "M2", "M3", "M4", "M4", "M5"),
                Core = c("A", "A","B","B","A","B","A"))

> df
  ID Core
1 M1    A
2 M2    A
3 M2    B
4 M3    B
5 M4    A
6 M4    B
7 M5    A


我想根据“ID”将“Core”列分成两列,这样就不会有重复的ID。我希望它看起来像这样:

  ID CoreA CoreB
1 M1     1     0
2 M2     1     1
3 M3     0     1
4 M4     1     1
5 M5     1     0

我相信有一个简单的解决办法,但我被难住了。

一个选择是
分散

library(tidyverse)
df %>%
   mutate(n = 1, Core = str_c("Core", Core)) %>% 
   spread(Core, n, fill = 0)
#   ID CoreA CoreB
#1 M1     1     0
#2 M2     1     1
#3 M3     0     1
#4 M4     1     1
#5 M5     1     0

或使用
数据。表格

library(data.table)
dcast(setDT(df), ID ~ paste0("Core", Core), length)

我不确定这是否真的是要求
重塑
扩展
。它看起来更像是一个列表请求。如果KateN将对问题进行编辑,以明确是否会有多个M1病例与CoreA相关,那么我们将确定。