행당 알파벳 3자를 저장하는 열이있는 예제 데이터 프레임이 있습니다. 데이터 프레임에는 날짜 및 색상이라는 2 개의 추가 열도 있습니다.
Alphabet Date Colour
ABC 2018-09-10 green
DEF 2017-06-11 red
GHI 2016-05-12 blue
JKL NA yellow
MNO NA orange
PQR Unknown brown
이 데이터 프레임에 일부 날짜가 없거나 알 수 없습니다. 알파벳과 날짜 열이있는 또 다른 데이터 프레임이 있습니다. 이 두 번째 데이터 프레임에는 첫 번째 데이터 프레임의 누락 된 날짜에 대한 날짜가 포함됩니다.
Alphabet Date
JKL 2017-06-07
MNO 2018-08-03
PQR 2019-10-07
STU 2019-11-08
VWX 2019-12-08
두 데이터 프레임의 알파벳 레코드를 일치시켜 첫 번째 데이터 프레임에서 누락 된 날짜를 채우고 두 번째 데이터 프레임의 날짜를 첫 번째 데이터 프레임에 삽입하려고합니다.
원하는 출력 :
Alphabet Date Colour
ABC 2018-09-10 green
DEF 2017-06-11 red
GHI 2016-05-12 blue
JKL 2017-06-07 yellow
MNO 2018-08-03 orange
PQR 2019-10-07 brown
도움을 주시면 감사하겠습니다.
한 가지 옵션은 data.table
library(data.table)
setDT(df1)[df2, Date := i.Date, on = .(Alphabet)]
df1
# Alphabet Date Colour
#1: ABC 2018-09-10 green
#2: DEF 2017-06-11 red
#3: GHI 2016-05-12 blue
#4: JKL 2017-06-07 yellow
#5: MNO 2018-08-03 orange
#6: PQR 2019-10-07 brown
새로운 'df2n'데이터 세트 사용
i1 <- is.na(df1$Date)|df1$Date %in% "Unknown"
setDT(df1)[df2n[df2n$Alphabet %in% df1$Alphabet[i1],],
Date := i.Date, on = .(Alphabet)]
df1
# Alphabet Date Colour
#1: ABC 2018-09-10 green
#2: DEF 2017-06-11 red
#3: GHI 2016-05-12 blue
#4: JKL 2017-06-07 yellow
#5: MNO 2018-08-03 orange
#6: PQR 2019-10-07 brown
또는 사용 match
에서base R
i1 <- match(df2$Alphabet, df1$Alphabet)
df1$Date[i1] <- df2$Date
df1 <- structure(list(Alphabet = c("ABC", "DEF", "GHI", "JKL", "MNO",
"PQR"), Date = c("2018-09-10", "2017-06-11", "2016-05-12", NA,
NA, "Unknown"), Colour = c("green", "red", "blue", "yellow",
"orange", "brown")), class = "data.frame", row.names = c(NA,
-6L))
df2 <- structure(list(Alphabet = c("JKL", "MNO", "PQR"), Date = c("2017-06-07",
"2018-08-03", "2019-10-07")), class = "data.frame", row.names = c(NA,
-3L))
df2a <- structure(list(Alphabet = c("JKL", "MNO", "PQR", "STU", "VWX"
), Date = c("2017-06-07", "2018-08-03", "2019-10-07", "2019-11-08",
"2019-12-08")), class = "data.frame", row.names = c(NA, -5L))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다