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)