특정 데이터 프레임 열에 대한 R Apply () 함수
데이터 프레임에서 적용 기능을 사용하고 싶지만 마지막 5 개 열에 만 기능을 적용합니다.
B<- by(wifi,(wifi$Room),FUN=function(y){apply(y, 2, A)})
이것은 y의 모든 열에 A를 적용합니다.
B<- by(wifi,(wifi$Room),FUN=function(y){apply(y[4:9], 2, A)})
이것은 A를 y의 4-9 열에 만 적용하지만 B의 총 수익은 처음 3 개 열에서 제거됩니다. 저는 여전히 그것들을 원합니다. 저는 A가 적용되는 것을 원하지 않습니다.
wifi[,1:3]+B
또한 내가 기대 / 원했던 일을하지 않습니다.
예제 data.frame 및 예제 함수 사용 (모든 값에 +1 만)
A <- function(x) x + 1
wifi <- data.frame(replicate(9,1:4))
wifi
# X1 X2 X3 X4 X5 X6 X7 X8 X9
#1 1 1 1 1 1 1 1 1 1
#2 2 2 2 2 2 2 2 2 2
#3 3 3 3 3 3 3 3 3 3
#4 4 4 4 4 4 4 4 4 4
data.frame(wifi[1:3], apply(wifi[4:9],2, A) )
#or
cbind(wifi[1:3], apply(wifi[4:9],2, A) )
# X1 X2 X3 X4 X5 X6 X7 X8 X9
#1 1 1 1 2 2 2 2 2 2
#2 2 2 2 3 3 3 3 3 3
#3 3 3 3 4 4 4 4 4 4
#4 4 4 4 5 5 5 5 5 5
또는:
data.frame(wifi[1:3], lapply(wifi[4:9], A) )
#or
cbind(wifi[1:3], lapply(wifi[4:9], A) )
# X1 X2 X3 X4 X5 X6 X7 X8 X9
#1 1 1 1 2 2 2 2 2 2
#2 2 2 2 3 3 3 3 3 3
#3 3 3 3 4 4 4 4 4 4
#4 4 4 4 5 5 5 5 5 5
lapply
apply
apply first가 data.frame을 배열로 강제 변환하므로 모든 열이 동일한 유형을 가져야하기 때문에 여기 보다 더 나은 선택 일 것 입니다. 상황에 따라 의도하지 않은 결과가 발생할 수 있습니다.
패턴은 다음과 같습니다.
df[cols] <- lapply(df[cols], FUN)
'cols'벡터는 변수 이름 또는 인덱스 일 수 있습니다. 가능할 때마다 이름을 사용하는 것을 선호합니다 (열 재정렬에 강력 함). 따라서 귀하의 경우 이것은 다음과 같습니다.
wifi[4:9] <- lapply(wifi[4:9], A)
열 이름 사용의 예 :
wifi <- data.frame(A=1:4, B=runif(4), C=5:9)
wifi[c("B", "C")] <- lapply(wifi[c("B", "C")], function(x) -1 * x)
언급했듯이 apply
열 ( MARGIN=2
)에 적용되는 표준 R 함수 를 원합니다 .
wifi[,4:9] <- apply(wifi[,4:9], MARGIN=2, FUN=A)
또는 짧게 :
wifi[,4:9] <- apply(wifi[,4:9], 2, A)
이렇게하면 A()
함수를 사용하여 열 4 : 9 제자리에서 업데이트 됩니다. 이제 그것이 아마도되어야 할 na.rm
인수 라고 가정 해 봅시다 A()
. 다음 na.rm=T
과 같이 계산에서 NA 값을 제거하도록 전달할 수 있습니다 .
wifi[,4:9] <- apply(wifi[,4:9], MARGIN=2, FUN=A, na.rm=T)
사용자 지정 함수에 전달하려는 다른 인수도 마찬가지입니다.
I think what you want is mapply. You could apply the function to all columns, and then just drop the columns you don't want. However, if you are applying different functions to different columns, it seems likely what you want is mutate, from the dplyr package.
참고URL : https://stackoverflow.com/questions/18503177/r-apply-function-on-specific-dataframe-columns
'Development Tip' 카테고리의 다른 글
TFS 2012 빌드 "경로에 대한 액세스가 거부 됨" (0) | 2020.11.17 |
---|---|
Spring에서 .html 파일을 제공하는 방법 (0) | 2020.11.17 |
두 개의 Pandas 데이터 프레임 결합 (공통 열에 결합) (0) | 2020.11.17 |
json.net을 사용하여 유형 정보없이 다형성 json 클래스 역 직렬화 (0) | 2020.11.17 |
함수 호출에 Swift에서 매개 변수 이름이 필요한 이유는 무엇입니까? (0) | 2020.11.17 |