"2 열"쌍인 a1 ... n 및 c1 ... n 시리즈를 기반으로 간단한 빼기를 만들고 싶습니다. dplyr에서 78 쌍 이상의 세 번째 열 b1 ... n을 작성합니다. 그러나 열을 올바르게 호출하는 방법과 각 열 쌍에 대해 행을 처리하는 방법을 알지 못합니다.78 * 2 다른 변수의 열 입력을 기반으로 새 (78) 변수를 계산합니다. dplyr
df
var C400.0 C403.7 C407.1 A399.6 A403.4 A406.4
V1 1.176 1.149 1.111 0.767 0.736 0.699
V2 1.192 1.160 1.127 0.770 0.738 0.707
V3 1.223 1.1918 1.154 0.775 0.744 0.715
나는 시도했다 : 어떤 성공
b_names <- c("B400", "B403", "B407")
df_b <- mutate_at(df,vars(C400.0:C407.1), .funs(b_names= ., vars(C400.0:C407.1)-vars(A399.6:A403.4)))
결과는 다음
df_b
var C400.0 C403.7 C407.1 A399.6 A403.4 A406.4 B400 B403 B407
V1 1.176 1.149 1.111 0.767 0.736 0.699 0.408 0.412 0.412
V2 1.192 1.160 1.127 0.770 0.738 0.707 0.421 0.421 0.420
V3 1.223 1.1918 1.154 0.775 0.744 0.715 0.447 0.447 0.439
열 이름으로 인코딩 된 값없이 긴 형식으로 데이터를 가져옵니다. 'tidyr :: gather' 또는'reshape2 :: melt'이 도움이 될 것입니다. – Gregor
아니면 그냥 base :'cbind (df, setNames (df [2 : 4] - df [5 : 7], b_names))'로 위치를 정하십시오. 모든 것이 올바른 순서로 이루어 졌는지 확인하십시오. – Gregor
제가 reshape2 및 tidyr 여러 열을 녹여하지 않는 것 같아 ..? data.table을 사용하면 패턴 헬퍼 함수'data.table (df) %> % melt (meas = patterns ("A", "C"), value를 사용할 수 있습니다.이름 = C를 ("A", "C")) %> % 돌연변이 (B = C - A) '하는 대신'mapply'과'assign'의 – Frank