다음 데이터 맹 글링 문제로 인해 문제가 있습니다. 각 데이터 집합은 aName
값 하나당 aValue
의 다중 값을 갖습니다. 이것은 깔끔한 데이터 프레임에서 쉽게 나타낼 수 있습니다.키 값 쌍을 열로 펼치기
someDatasets <- list(dataset1 = data.frame(aName = c("a", "a", "a", "b", "b"), aValue = 1:5, dataset = "ds1"),
dataset2 = data.frame(aName = c("a", "a", "a", "b", "c", "c"), aValue = (1:6)*10 , dataset = "ds2"),
dataset3 = data.frame(aName = c("a", "c", "c", "c"), aValue = (1:4)*100, dataset = "ds3"))
tidyData <- Reduce(dplyr::bind_rows, someDatasets)
데이터 세트 변수를 개별 열로 "분산"하고 싶습니다. (I 때문에 중복 키의 원하는 출력을 생성 할 tidyr::spread
을 사용할 수 없습니다.)
###
# Desired output
###
# aName ds1 ds2 ds3
# a 1 10 100
# a 2 20 NA
# a 3 30 NA
# b 4 40 NA
# b 5 NA NA
# c NA 50 200
# c NA 60 300
# c NA NA 400
원하는 출력을 생성하는 깔끔한 방법이 있나요?
PS : 나는 spread-key-value-pairs-when-keys-are-in-different-columns 질문 만 집계 함수 length
이 사용되기 때문에
dcast(melt(someDatasets, id = "aName", na.rm = TRUE), aName~value)
원하는 출력을 생성하지 않는 솔루션 알고 있어요.
길이가 사용되며, 그 이유는 바람직하지 않다? –
%> % mutation (aName = paster (aName, 1 : n)) %> % mutate (aName = 1) aName, 1, 1))'. – lukeA
"aName"및 "dataset"("tidyData"데이터 세트의 그룹)을 기준으로 보조 ID를 추가 한 다음 'dcast'를 사용하십시오. 예를 들어 보조 ID의 이름을 "ID"로 지정한 경우 'dcast (tidyDataWithID, aName + ID ~ dataset, value.var = "aValue")'를 수행 할 수 있습니다. – A5C1D2H2I1M1N2O1R2T1