Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 重塑和合并后的重复行_R - Fatal编程技术网

R 重塑和合并后的重复行

R 重塑和合并后的重复行,r,R,我正在分析学生的考试数据,但在此之前我想整理一下。我试图构建一个整洁的数据框架,但似乎行是重复的。下面是我的代码 library(tidyverse) (Test <- tibble( Student = c("A", "B", "C", "D", "E"), Test1 = c("SAT", "SAT", "SAT", "SAT", "SAT"), Test2 = c("NA", "ACT", "ACT", "ACT", "ACT"), testdate1 = c("7/

我正在分析学生的考试数据,但在此之前我想整理一下。我试图构建一个整洁的数据框架,但似乎行是重复的。下面是我的代码

library(tidyverse)
(Test <- tibble(
  Student = c("A", "B", "C", "D", "E"),
  Test1 = c("SAT", "SAT", "SAT", "SAT", "SAT"),
  Test2 = c("NA", "ACT", "ACT", "ACT", "ACT"),
  testdate1 = c("7/1/2017", "6/1/2017", "3/1/2017", "2/17/2018", "NA"),
  testdate2 = c("NA", "NA", "1/1/2016", "12/1/2016", "10/1/2016")
))


(Testa <- tibble(
  Student = c("A", "B", "C", "D", "E"),
  Test1 = c("SAT", "SAT", "SAT", "SAT", "SAT"),
  Test2 = c("NA", "ACT", "ACT", "ACT", "ACT")
))


(Testb <- tibble(
  Student = c("A", "B", "C", "D", "E"),
  testdate1 = c("7/1/2017", "6/1/2017", "3/1/2017", "2/17/2018", "NA"),
  testdate2 = c("NA", "NA", "1/1/2016", "12/1/2016", "10/1/2016")
))

(td1 <- Testa %>% 
    gather(Test1, Test2, key = "Test", value = "Score"))
(td2 <- Testb %>% 
    gather(testdate1, testdate2, key = "Dated", value = "Datev"))
(tidy <- left_join(td1, td2))
库(tidyverse)

(测试您需要学生id和测试id

看看这是否有帮助

td1 <- Testa %>% 
     gather(Test1, Test2, key = "Test", value = "Score")

td2 <- Testb %>%
     gather(testdate1, testdate2, key = "Dated", value = "Datev") %>%
     mutate(Test=ifelse(Dated %in% "testdate1", "Test1", "Test2"))
tidy <- left_join(td1, td2)
tidy
td1%
收集(Test1、Test2、key=“Test”、value=“Score”)
td2%
聚集(testdate1、testdate2、key=“Dated”、value=“Datev”)%%>%
突变(Test=ifelse(日期为%in%“testdate1”、“Test1”、“Test2”))

tidy我认为最简单的解决方案是使用
stats::reforme
,它能够收集多个列,正如回答这个问题时所建议的:


stats:reformate
的界面没有整洁的界面漂亮,但它可以在一个函数调用中完成任务。

如果ID在每个加入的数据集中不是唯一的,它将导致重复类似于
base::merge
:有可能的解决方案。非常感谢您的回复。我想我已经猜到了我正在使用这个整洁的%>%distinct(Student,Datev,.keep_all=TRUE)