Hello, I have a problem with the "do.call-function". I would like to merge the values of more than 30 columns, but not in all of the rows exist values, so with this commando i get a lot of ";" or NA. How get i only the merge of cells with a number? datos$NEW <- do.call(paste, c(datos[,19:53], sep = ";")) $ NEW : chr "218.0;;;;;;;;;;;;;;;;;;;;;;;;NA;;;NA;;;NA;NA;NA;NA;NA I hope you can help me. Thanks! Best regards, Dominic
do.call
4 messages · Dominic Roye, arun
Hi, Try this: set.seed(15) datos<-as.data.frame(matrix(sample(c(1:20,NA),30,replace=TRUE),ncol=6)) ?do.call(paste,c(na.omit(datos),sep=";")) #[1] "5;18;14;10;17;3"? "14;15;15;3;2;20"? "8;18;19;17;12;11" A.K. ----- Original Message ----- From: Dominic Roye <dominic.roye at gmail.com> To: r-help at r-project.org Cc: Sent: Tuesday, December 4, 2012 7:38 AM Subject: [R] do.call Hello, I have a problem with the "do.call-function". I would like to merge the values of more than 30 columns, but not in all of the rows exist values, so with this commando i get a lot of ";" or NA. How get i only the merge of cells with a number? datos$NEW <- do.call(paste, c(datos[,19:53], sep = ";")) $ NEW? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr "218.0;;;;;;;;;;;;;;;;;;;;;;;;NA;;;NA;;;NA;NA;NA;NA;NA I hope you can help me. Thanks! Best regards, Dominic ______________________________________________ R-help at 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.
1 day later
Hi, thanks for your answer, but in this way R delete all rows with NA. In all rows I have values but also NA. I don?t know why it delete all of them. I hope you can give me an idea. Thanks. Best regards,
str(temp)
'data.frame': 112598 obs. of 35 variables: $ Lista.de.c?digos.de.diagn?stico: chr "218.0" "890.1" "998.89" "650." ... $ X : chr NA "E986" "780.2" "V27.0" ... $ X.1 : chr NA NA "780.4" NA ... $ X.2 : chr NA NA "381.3" NA ... $ X.3 : chr NA NA NA NA ... $ X.4 : chr NA NA NA NA ... $ X.5 : chr NA NA NA NA ... $ X.6 : chr NA NA NA NA ... $ X.7 : chr NA NA NA NA ... $ X.8 : chr NA NA NA NA ... $ X.9 : chr NA NA NA NA ... $ X.10 : chr NA NA NA NA ... $ X.11 : chr NA NA NA NA ... $ X.12 : chr NA NA NA NA ... $ X.13 : chr NA NA NA NA ... $ X.14 : chr NA NA NA NA ... $ X.15 : chr NA NA NA NA ... $ X.16 : chr NA NA NA NA ... $ X.17 : chr NA NA NA NA ... $ X.18 : chr NA NA NA NA ... $ X.19 : chr NA NA NA NA ... $ X.20 : chr NA NA NA NA ... $ X.21 : chr NA NA NA NA ... $ X.22 : chr NA NA NA NA ... $ X.23 : num NA NA NA NA NA NA NA NA NA NA ... $ X.24 : chr NA NA NA NA ... $ X.25 : chr NA NA NA NA ... $ X.26 : num NA NA NA NA NA NA NA NA NA NA ... $ X.27 : chr NA NA NA NA ... $ X.28 : chr NA NA NA NA ... $ X.29 : num NA NA NA NA NA NA NA NA NA NA ... $ X.30 : num NA NA NA NA NA NA NA NA NA NA ... $ X.31 : num NA NA NA NA NA NA NA NA NA NA ... $ X.32 : num NA NA NA NA NA NA NA NA NA NA ... $ X.33 : logi NA NA NA NA NA NA ...
new <- do.call(paste, c(na.omit(temp[,1:35]), sep = ";")) new
character(0) 2012/12/4 arun <smartpink111 at yahoo.com>:
Hi, Try this: set.seed(15) datos<-as.data.frame(matrix(sample(c(1:20,NA),30,replace=TRUE),ncol=6)) do.call(paste,c(na.omit(datos),sep=";")) #[1] "5;18;14;10;17;3" "14;15;15;3;2;20" "8;18;19;17;12;11" A.K. ----- Original Message ----- From: Dominic Roye <dominic.roye at gmail.com> To: r-help at r-project.org Cc: Sent: Tuesday, December 4, 2012 7:38 AM Subject: [R] do.call Hello, I have a problem with the "do.call-function". I would like to merge the values of more than 30 columns, but not in all of the rows exist values, so with this commando i get a lot of ";" or NA. How get i only the merge of cells with a number? datos$NEW <- do.call(paste, c(datos[,19:53], sep = ";")) $ NEW : chr "218.0;;;;;;;;;;;;;;;;;;;;;;;;NA;;;NA;;;NA;NA;NA;NA;NA I hope you can help me. Thanks! Best regards, Dominic
______________________________________________ R-help at 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.
HI Dominic, You are right. na.omit() will delete rows containing at least 1 NAs.? Suppose, a function deletes? only NAs separately for each column, then the length of each column will be different. According to ?data.frame() " Objects passed to ?data.frame? should have the same number of ???? rows, but atomic vectors, factors and character vectors protected ???? by ?I? will be recycled a whole number of times if necessary ???? (including as elements of list arguments). " Then, instead of data.frame, list would be an option. Could you tell me the expected output?? I thought you wanted to eliminate rows which have at least 1 NA. If your dataset includes NA in all the rows, then it would be better to have some threshold. For e.g. set.seed(15) ?datos<-as.data.frame(matrix(sample(c(1:20,NA),30,replace=TRUE),ncol=6)) do.call(paste,c(datos[apply(datos,1,function(x) !sum(is.na(x))>1),],sep=";")) #deleted rows with more than 1 NA #[1] "13;NA;3;18;17;14" "5;18;14;10;17;3"? "14;15;15;3;2;20"? "8;18;19;17;12;11" ?A.K. ----- Original Message ----- From: Dominic Roye <dominic.roye at gmail.com> To: arun <smartpink111 at yahoo.com> Cc: R help <r-help at r-project.org> Sent: Thursday, December 6, 2012 7:40 AM Subject: Re: [R] do.call Hi, thanks for your answer, but in this way R delete all rows with NA. In all rows I have values but also NA. I don?t know why it delete all of them. I hope you can give me an idea. Thanks. Best regards,
str(temp)
'data.frame':? 112598 obs. of? 35 variables: $ Lista.de.c?digos.de.diagn?stico: chr? "218.0" "890.1" "998.89" "650." ... $ X? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA "E986" "780.2" "V27.0" ... $ X.1? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA "780.4" NA ... $ X.2? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA "381.3" NA ... $ X.3? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.4? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.5? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.6? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.7? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.8? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.9? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.10? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.11? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.12? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.13? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.14? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.15? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.16? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.17? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.18? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.19? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.20? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.21? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.22? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.23? ? ? ? ? ? ? ? ? ? ? ? ? : num? NA NA NA NA NA NA NA NA NA NA ... $ X.24? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.25? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.26? ? ? ? ? ? ? ? ? ? ? ? ? : num? NA NA NA NA NA NA NA NA NA NA ... $ X.27? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.28? ? ? ? ? ? ? ? ? ? ? ? ? : chr? NA NA NA NA ... $ X.29? ? ? ? ? ? ? ? ? ? ? ? ? : num? NA NA NA NA NA NA NA NA NA NA ... $ X.30? ? ? ? ? ? ? ? ? ? ? ? ? : num? NA NA NA NA NA NA NA NA NA NA ... $ X.31? ? ? ? ? ? ? ? ? ? ? ? ? : num? NA NA NA NA NA NA NA NA NA NA ... $ X.32? ? ? ? ? ? ? ? ? ? ? ? ? : num? NA NA NA NA NA NA NA NA NA NA ... $ X.33? ? ? ? ? ? ? ? ? ? ? ? ? : logi? NA NA NA NA NA NA ...
new <- do.call(paste, c(na.omit(temp[,1:35]), sep = ";")) new
character(0) 2012/12/4 arun <smartpink111 at yahoo.com>:
Hi, Try this: set.seed(15) datos<-as.data.frame(matrix(sample(c(1:20,NA),30,replace=TRUE),ncol=6)) ? do.call(paste,c(na.omit(datos),sep=";")) #[1] "5;18;14;10;17;3"? "14;15;15;3;2;20"? "8;18;19;17;12;11" A.K. ----- Original Message ----- From: Dominic Roye <dominic.roye at gmail.com> To: r-help at r-project.org Cc: Sent: Tuesday, December 4, 2012 7:38 AM Subject: [R] do.call Hello, I have a problem with the "do.call-function". I would like to merge the values of more than 30 columns, but not in all of the rows exist values, so with this commando i get a lot of ";" or NA. How get i only the merge of cells with a number? datos$NEW <- do.call(paste, c(datos[,19:53], sep = ";")) $ NEW? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : chr "218.0;;;;;;;;;;;;;;;;;;;;;;;;NA;;;NA;;;NA;NA;NA;NA;NA I hope you can help me. Thanks! Best regards, Dominic
______________________________________________ R-help at 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.