내 DF :
dataAB <- c("A","B","A","A","B")
dataCD <- c("C","C","D","D","C")
dataEF <- c("F","E","E","E","F")
key <- c("dataC","dataA","dataC","dataE","dataE")
df <- data.frame(dataAB,dataCD,dataEF,key)
DF 이름에서 "key"의 값을 찾고 해당 열의 값을 행에 사용하는 열을 추가하고 싶습니다. 내 결과는 다음과 같습니다.
df$result <- c("C","B","D","E","F")
"key"열의 값은 df의 열 이름과 부분적으로 만 일치하며 열 이름의 전체 이름이 아닙니다. 나는 내가 필요 grep
하거나 grepl
어딘가에 있을 것이라고 생각한다 . 다음 코드에 변화를 시도했지만, 일을 아무것도 얻을 수 없다, 나는 적용하는 방법을 확실 해요 grep
또는 grepl
이 경우.
df$result <- mapply(function(a) {df[[as.character(a)]]}, a=df$key)
apply
with margin = 1
(row-wise)를 사용하여 어떤 열 grepl
에서 패턴을 감지하는 데 도움 이되는 값 을 가져와야합니다.
df$result <- apply(df, 1, function(x) x[grepl(x["key"], names(x))])
df
# dataAB dataCD dataEF key result
#1 A C F dataC C
#2 B C E dataA B
#3 A D E dataC D
#4 A D E dataE E
#5 B C F dataE F
또 다른 옵션은 mapply
사용하여 값을 추출해야하는 열을 찾은 sapply
다음 각 행에서 해당 값을 가져 오는 것입니다.
df$result <- mapply(function(x, y) df[x, y], 1:nrow(df),
sapply(df$key, function(x) grep(x, names(df), value = TRUE)))
df
# dataAB dataCD dataEF key result
#1 A C F dataC C
#2 B C E dataA B
#3 A D E dataC D
#4 A D E dataE E
#5 B C F dataE F
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다