Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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_Dplyr_Sapply - Fatal编程技术网

如何在r中将具有相同ID的行相互粘贴在后面

如何在r中将具有相同ID的行相互粘贴在后面,r,dplyr,sapply,R,Dplyr,Sapply,这可能是一个简单的问题,但我在任何地方都找不到答案:(你能帮我吗 如果您有一个如下所示的数据帧: "ID" "date" A 01-03-2017 A 05-02-2016 B 08-03-2016 A 09-11-2012 B 02-03-2014 B 09-07-2013 C 23-08-2016 B 24-05-2017 C 12-1

这可能是一个简单的问题,但我在任何地方都找不到答案:(你能帮我吗

如果您有一个如下所示的数据帧:

 "ID"      "date" 
  A       01-03-2017
  A       05-02-2016
  B       08-03-2016
  A       09-11-2012
  B       02-03-2014
  B       09-07-2013
  C       23-08-2016
  B       24-05-2017
  C       12-12-2015
我希望它看起来像这样: `

因此,将具有相同ID的所有行相互粘贴,为每一行创建一个新列。 我希望我能说清楚。有人能告诉我怎么做吗? 多谢各位,
Sara

这里有一个使用“扩展”功能的解决方案。谢谢

#库
图书馆(tidyverse)
#1.数据集
df%
突变(日期=序列号(id))%>%
价差(键=日期,值=值,sep=“.”)

希望它在某种程度上有所帮助

试试这个
库(tidyverse);df%>%group\u by(ID)%%>%mutate(value=date,date=seq\u沿途(ID))%%>%spread(key=date,value=value,sep=“.”
其中
df
是您的数据集的名称。非常感谢!!这很有效!!
"ID"      "date.1"  "date.2"  "date.3"   "date.4"                                    
A       01-03-2017  05-02-2016  09-11-2012  NA 
B       08-03-2016  02-03-2014  09-07-2013 24-05-2017
C       23-08-2016  12-12-2015  NA          NA
# Libraries
library(tidyverse)  

# 1. Data set
df <- data.frame(
  id = c("A", "A", "B", "A", "B", "B", "C", "B", "C"),
  date = c("01-03-2017", "05-02-2016", "08-03-2016", "09-11-2012",
       "02-03-2014", "09-07-2013", "23-08-2016", "24-05-2017", "12-12-2015"))

# 2. New feature 'value' the same as 'date'
df$value <- df$date

# 3. Use 'spread' from 'tidyverse'

# 3.1. Just 'spread'
spread(df, key = date, value = value)

# 3.2. 'spread' thanks 'Markus' for the solution
df %>% 
  group_by(id) %>% 
  mutate(date = seq_along(id)) %>% 
  spread(key = date, value = value, sep = ".")