2016-11-09 3 views
0

열 1806 개의 데이터 프레임에 ID, x, it, st 열이 있다고 가정합니다. 이제 모든 데이터 프레임에 대해 새 값이 st-1이되도록 st 열을 변경하고 싶습니다. 예를 들어 처음 9 개 행의이 데이터 프레임에 대한 출력은 행 10 이후부터는 11.0이됩니다.각 데이터 프레임 열의 값을 기반으로 여러 데이터 프레임의 열을 변경

는 control37868.So 열라고 예를 들어이 dataframe이 변경 될

나는 이미 모든 dataframes와 목록을 생성 control37868 $ 일

ID x   it   st 
2 1.464462e+12 20.17831 NA 
3 1.464462e+12 20.15657 NA 
4 1.464463e+12 20.13484 NA 
5 1.464463e+12 20.11310 NA 
6 1.464464e+12 20.09136 NA 
7 1.464465e+12 20.06963 NA 
8 1.464465e+12 20.04789 NA 
9 1.464466e+12 20.02615 NA 
10 1.464466e+12 20.00442 12.0 
11 1.464467e+12 19.98268 12.0 
12 1.464468e+12 19.96094 12.0 
13 1.464468e+12 19.93921 12.0 
14 1.464469e+12 19.95700 12.0 
15 1.464469e+12 20.01383 12.0 
16 1.464470e+12 19.96272 12.0 
17 1.464471e+12 19.96149 12.0 
18 1.464471e+12 20.01166 12.0 
19 1.464472e+12 19.92711 12.0 
20 1.464472e+12 19.90119 12.0 
21 1.464473e+12 19.88064 12.0 
22 1.464474e+12 19.86010 12.0 

입니다 :

#get list with all dataframes 
dflist <- list(incident11951, incident12720, incident13643, incident1379, incident14248, incident14968, incident15634, incident16439, incident17383, incident17734, incident17850, incident18009, incident18337, incident21888, incident22666, incident23269, incident23682, incident23870, incident24493, incident25116, incident25669, incident26222, incident26931, incident28226, incident28290, incident29070, incident29180, incident29484, incident29726, incident29969, incident30244, incident30691, incident30967, incident31376, incident31434, incident32608, incident33041, incident33668, incident35112, incident35254, incident35577, incident36125, incident36267, incident36592, incident36671, incident37244, incident37412, incident37724, incident37868, incident38161, incident39453, incident39786, incident40482, incident40487, incident40975, incident41013, incident41381, incident41701, incident41772, incident42226, incident42358, incident42613, incident43395, incident43476, incident44827, incident45053, incident45454, incident45605, incident45703, incident46637, incident47832, incident50133, incident52105, incident5585, incident56003, incident56862, incident58213, incident58960, incident617, incident6361, incident7122, incident8144, incident9027, incident9245, incident9262, incident9534, incident9875, control11951, control12720, control13643, control1379, control14248, control14968, control15634, control16439, control17383, control17734, control17850, control18009, control18337, control21888, control22666, control23269, control23682, control23870, control24493, control25116, control25669, control26222, control26931, control28226, control28290, control29070, control29180, control29484, control29726, control29969, control30244, control30691, control30967, control31376, control31434, control32608, control33041, control33668, control35112, control35254, control35577, control36125, control36267, control36592, control36671, control37244, control37412, control37724, control37868, control38161, control39453, control39786, control40482, control40487, control40975, control41013, control41381, control41701, control41772, control42226, control42358, control42613, control43395, control43476, control44827, control45053, control45454, control45605, control45703, control46637, control47832, control50133, control52105, control5585, control56003, control56862, control58213, control58960, control617, control6361, control7122, control8144, control9027, control9245, control9262, control9534, control9875) 

이 있어야한다 dflist를 통해 sapply() 함수로 수행 할 수 있지만 현재 값에 따라 열 값을 변경하는 올바른 함수를 정의하는 방법을 모르겠습니다.

해당 열을 추가하고 임계 값을 지정하면됩니다. 따라서 나는 또한

Map(cbind, dflist, threshold = st-1) 

을 시도했지만 일-1의 참조 obviouly이 할

답변

0

방법 중 하나 충분하지 않습니다 : 당신은 당신이 할 수 df라고 하나 dataframe을 변경하려면

dflist<- lapply(dflist, function(x){ 
      y <- x[!is.na(x$st),]; 
      y$st <- y$st-1; 
      x[!is.na(x$st),] <- y; 
      x}) 

을 시도 :

idx <- which(!is.na(df$st)) 
if (length(idx) > 0) df[idx, ]$st <- df[idx,]$st-1 
+0

하나도이 작업을 수행 할 수 있습니다. 'lapply (l, function (x) {y = x; y $ st- -y $ st-1; y})' –

+0

위대한; 고맙습니다! 이렇게하면 데이터 프레임이있는 목록에 함수가 적용됩니다. 그러나 이제는 단일 데이터 프레임을 호출 할 때 열이 변경되지 않았습니다. 데이터 프레임이있는 목록의 변경 사항을 실제 데이터 프레임으로 전송할 수 있습니까? – GNee

+0

이 업데이트되었습니다.이 질문에 대한 답변을 제공합니까? –

관련 문제