Hi all-- I stumbled on this problem online. I did not like the solution given there which was a long UDF. I thought why cannot split and l/s apply work here. My aim is to split the data frame, use l/sapply, make changes on the split lists and combine the split lists to new data frame with the desired changes/output.
The data frame shown below has a column named ID which has 2 variables a and b; i want to replace the NAs on the Value column by 2, which is the only numeric entry, for ID=a and by 5 for ID=b. I worked out the solution but could not replace the results in the split lists. Original dataframe , df1 ID ID_2 Firist Value 1 a aa TRUE 2 2 a ab FALSE NA 3 a ac FALSE NA 4 b aa TRUE 5 5 b ab FALSE NA Sdf1 $a ID ID_2 Firist Value 1 a aa TRUE 2 2 a ab FALSE NA 3 a ac FALSE NA $b ID ID_2 Firist Value 4 b aa TRUE 5 5 b ab FALSE NA Desired results ID ID_2 Firist Value 1 a aa TRUE 2 2 a ab FALSE 2 3 a ac FALSE 2 $b ID ID_2 Firist Value 4 b aa TRUE 5 5 b ab FALSE 5 My code sdf <- split(df1,df$ID) lapply(sdf, function(z) ifelse(is.na(z$Value),z$Value[!is.na(z$Value)],z$Value)) result: $ a: num [1:3] 2 2 2 $ b: num [1:2] 5 5 How could I put these two lists back in the split data frame, sdf1? Then I could use do.call to reassemble a data frame from the split lists, Thanks, EK ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.