An embedded and charset-unspecified text was scrubbed... Name: not available Url: https://stat.ethz.ch/pipermail/r-help/attachments/20060821/baa3279a/attachment.pl
Dataframe modification
4 messages · Sachin J, Gabor Grothendieck
Here are two solutions:
A <- 1:8
B <- c(1,2,4,7,8)
C <- c(5,3,10,12,17)
# solution 1 - assignment with subscripting
DF <- data.frame(A, B = A, C = 0)
DF[A %in% B, "C"] <- C
# solution 2 - merge
DF <- with(merge(data.frame(A), data.frame(B, C), by = 1, all = TRUE),
data.frame(A, B = A, C = ifelse(is.na(C), 0, C)))
On 8/21/06, Sachin J <sachinj.2006 at yahoo.com> wrote:
Hi, How can I accomplish this in R. I have a Dataframe with 3 columns. Column B and C have same elements. But column A has more elements than B and C. I want to compare Column A with B and do the following: If A is not in B then insert a new row in B and C and fill these new rows with B = A and C = 0. So finally I will have balanced dataframe with equal no of rows (entries) in all the columns. For example: A[3] = 3 but is not in B. So insert new row and set B[3] = 3 (new row) and C[3] = 0. Final result would look like: A B C 1 1 5 2 2 3 3 3 0 4 4 10 5 5 0 6 6 0 7 7 12 8 8 17 These are the columns of DF
> a <- c(1,2,3,4,5,6,7,8) > b <- c(1,2,4,7,8) > c(5,3,10,12,17)
Thanx in advance for the help. Sachin
__________________________________________________
[[alternative HTML version deleted]]
______________________________________________
R-help at stat.math.ethz.ch 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.
An embedded and charset-unspecified text was scrubbed... Name: not available Url: https://stat.ethz.ch/pipermail/r-help/attachments/20060821/637cd043/attachment.pl
I think the first one still works in that case.
If reordering the rows is ok then the second one works too.
A <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7,8,9,10,11,12)
B <- c(1,2,4,7,8)
C <- c(5,3,10,12,17)
# solution 1 - assignment with subscripting
DF <- data.frame(A, B = A, C = 0)
DF[A %in% B, "C"] <- C
DF
# solution 2 - merge
DF <- with(merge(data.frame(A), data.frame(B, C), by = 1, all = TRUE,
sort = FALSE), data.frame(A, B = A, C = ifelse(is.na(C), 0, C)))
DF
On 8/21/06, Sachin J <sachinj.2006 at yahoo.com> wrote:
Hi Gabor, Thanx for the help. I forgot to mention this. Column A is something like this A <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7,8,9,10,11,12) i.e it repeats. Rest all is same. How can I modify your solution to take care of this issue. Thanx in advance. Sachin Gabor Grothendieck <ggrothendieck at gmail.com> wrote: Here are two solutions: A <- 1:8 B <- c(1,2,4,7,8) C <- c(5,3,10,12,17) # solution 1 - assignment with subscripting DF <- data.frame(A, B = A, C = 0) DF[A %in% B, "C"] <- C # solution 2 - merge DF <- with(merge(data.frame(A), data.frame(B, C), by = 1, all = TRUE), data.frame(A, B = A, C = ifelse(is.na(C), 0, C))) On 8/21/06, Sachin J wrote:
Hi, How can I accomplish this in R. I have a Dataframe with 3 columns. Column B and C have same elements. But
column A has more elements than B and C. I want to compare Column A with B and do the following:
If A is not in B then insert a new row in B and C and fill these new rows
with
B = A and C = 0. So finally I will have balanced dataframe with equal no
of rows (entries) in all the columns.
For example: A[3] = 3 but is not in B. So insert new row and set B[3] = 3 (new row) and
C[3] = 0. Final result would look like:
A B C 1 1 5 2 2 3 3 3 0 4 4 10 5 5 0 6 6 0 7 7 12 8 8 17 These are the columns of DF
a <- c(1,2,3,4,5,6,7,8) b <- c(1,2,4,7,8) c(5,3,10,12,17)
Thanx in advance for the help. Sachin
__________________________________________________ [[alternative HTML version deleted]] ______________________________________________ R-help at stat.math.ethz.ch 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. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com