Hi, It is better to show the example data using ?dput(). Here, it is not clear whether the columns are character columns or lists. ##If it is the latter case
dat1 <- data.frame(V1=I(list(1:3, c(1,2,4), c(2,3,4,5))), V2= I(list(c(3,6,5), c(7,10,9), 2:5))) dat1$V3 <- mapply(`c`,mapply(`-`, lapply(dat1$V2, `[`,-1), lapply(dat1$V1,head,-1)), lapply(dat1$V1,tail,1)) dat1 # V1 V2 V3 #1 1, 2, 3 3, 6, 5 5, 3, 3 #2 1, 2, 4 7, 10, 9 9, 7, 4 #3 2, 3, 4, 5 2, 3, 4, 5 1, 1, 1, 5 ##If the columns are character vectors. dat2 <- structure(list(V1 = c("1,2,3", "1,2,4", "2,3,4,5"), V2 = c("3,6,5", "7,10,9", "2,3,4,5")), .Names = c("V1", "V2"), row.names = c(NA, -3L), class = "data.frame") lst1 <- sapply(dat2, function(x) lapply(strsplit(x, split=","),as.numeric)) dat2$V3 <- unlist(lapply(mapply(`c`,mapply(`-`, lapply(lst1[,2],`[`, -1), lapply(lst1[,1], head,-1)), lapply(lst1[,1], tail,1)), paste, collapse=",")) dat2 # V1 V2 V3 #1 1,2,3 3,6,5 5,3,3 #2 1,2,4 7,10,9 9,7,4 #3 2,3,4,5 2,3,4,5 1,1,1,5 A.K. Hi, I have a quick question in R. I have dataframe with two columns with multiple values separated by comma. Example: V1 V2 1 1, 2, 3 3, 6, 5 2 1, 2, 4 7, 10, 9 3 2, 3, 4, 5 2, 3, 4, 5 I want to calculate the difference between both the column. Expected results (suppose results are stored in V3) - it is basically subtracting (n-th) value of the column1 from (n-th + 1) value of column2. V3 1 6-1, 5-2, 3 2 10-1, 9-2, 4 3 3-2, 4-3, 5-4, 5 which gives (Last value doesn't matter) V3 1 5, 3, 3 2 9, 7, 4 3 1, 1, 1, 5 Would greatly appreciate if anyone can suggest how can I proceed? ______________________________________________ R-help@r-project.org mailing list 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.