jpm miao
2016-May-01 01:19 UTC
[R] How to print the frequency table (produced by the command "table" to Excel
Thanks. Could we print the row/column names, "alpha1" and "alpha2" to the csv file? 2016-04-30 17:06 GMT-07:00 Jim Lemon <drjimlemon at gmail.com>:> Hi jpm miao, > I think you can get what you want like this: > > alpha1<-sample(LETTERS[1:3],50,TRUE) > alpha2<-sample(LETTERS[1:2],50,TRUE) > alphas<-data.frame(alpha1,alpha2) > library(prettyR) > alphatab<-xtab(alpha1~alpha2,alphas) > sink("temp_table3.csv",append=TRUE) > delim.xtab(alphatab,pct=NA,delim=",") > sink() > > Jim > > On Sun, May 1, 2016 at 4:47 AM, jpm miao <miaojpm at gmail.com> wrote: > > Jim, > > > > Thanks for creating such a fantastic package "prettyR". > > I want to print the pretty frequency table (with row total and column > > total) to an excel (or csv ) file. Is it possible? > >>alphatab > > > > A B Total > > A 8 10 18 > > B 7 5 12 > > C 9 11 20 > > Total 24 26 50 > > > > Two issues I encountered (See the attached csv file). > > 1. When I tried to print the above table to csv file, all elements on the > > same row are printed in one cell. > > 2. If I write "delim.table(alpha tab)", the table is distorted (see > > attached). Of course, I can adjust it manually but sometimes the number > of > > files is big. > > > > Thanks! > > > > Miao > > > >> alpha1<-sample(LETTERS[1:3],50,TRUE) > >> alpha2<-sample(LETTERS[1:2],50,TRUE) > >> > >> alphas<-data.frame(alpha1,alpha2) > >> alphatab<-xtab(alpha1~alpha2,alphas) > > Crosstabulation of alpha1 by alpha2 > > alpha2 > > alpha1 A B > > A 8 10 18 > > 44.44 55.56 - > > 33.33 38.46 36.00 > > > > B 7 5 12 > > 58.33 41.67 - > > 29.17 19.23 24.00 > > > > C 9 11 20 > > 45 55 - > > 37.50 42.31 40.00 > > > > 24 26 50 > > 48 52 100 > >> delim.xtab(alphatab,pct=NA,interdigitate=TRUE) > > alphatab > > > > A B Total > > A 8 10 18 > > B 7 5 12 > > C 9 11 20 > > Total 24 26 50 > > > >> sink("temp_table3.csv") > >> delim.xtab(alphatab,pct=NA,interdigitate=TRUE) > >> sink() > >> sink("temp_table3.csv", append=TRUE) > >> delim.table(alphatab) > >> sink() > >> sink("temp_table3.csv", append=TRUE) > >> delim.table(alphatab) > >> sink() > >> ?delim.xtab > > > > > > 2016-04-26 16:14 GMT-07:00 Jim Lemon <drjimlemon at gmail.com>: > >> > >> Hi jpm miao, > >> You can get CSV files that can be imported into Excel like this: > >> > >> library(prettyR) > >> sink("excel_table1.csv") > >> delim.table(table(df[,c("y","z")])) > >> sink() > >> sink("excel_table2.csv") > >> delim.table(as.data.frame(table(df[,c("y","z")])),label="") > >> sink() > >> sink("excel_table3.csv") > >> delim.table(as.matrix(table(df[,c("y","z")])),label="") > >> sink() > >> > >> Jim > >> > >> On Wed, Apr 27, 2016 at 8:35 AM, jpm miao <miaojpm at gmail.com> wrote: > >> > Hi, > >> > > >> > How could we print the frequency table (produced by "table") to an > >> > Excel > >> > file? > >> > Is there an easy way to do so? Thanks, > >> > > >> > Miao > >> > > >> >> df <- data.frame(x = 1:3, y = 3:1, z = letters[1:3]) > >> > > >> >> table(df[,c("y","z")]) > >> > z > >> > y a b c > >> > 1 0 0 1 > >> > 2 0 1 0 > >> > 3 1 0 0 > >> >> test<-table(df[,c("y","z")]) > >> >> as.data.frame(test) > >> > y z Freq > >> > 1 1 a 0 > >> > 2 2 a 0 > >> > 3 3 a 1 > >> > 4 1 b 0 > >> > 5 2 b 1 > >> > 6 3 b 0 > >> > 7 1 c 1 > >> > 8 2 c 0 > >> > 9 3 c 0 > >> >> as.matrix(test) > >> > z > >> > y a b c > >> > 1 0 0 1 > >> > 2 0 1 0 > >> > 3 1 0 0 > >> >> testm<-as.matrix(test) > >> >> testm > >> > z > >> > y a b c > >> > 1 0 0 1 > >> > 2 0 1 0 > >> > 3 1 0 0 > >> >> typeof(testm) > >> > [1] "integer" > >> > > >> > [[alternative HTML version deleted]] > >> > > >> > ______________________________________________ > >> > R-help at 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. > > > > >[[alternative HTML version deleted]]
Jim Lemon
2016-May-02 09:58 UTC
[R] How to print the frequency table (produced by the command "table" to Excel
Hi jpm miao, After a fair stretch of fooling around with it, I can't see any way to add the variable names ("varnames") to the output of delim.table without breaking it for things other than table objects. You can probably do this as a one-off hack by setting the names of the dimnames of the "counts" element in alphatab like this: names(dimnames(alphatab$counts))<-alphatab$varnames You can then shoehorn these into the output by adding a line to display the second varname above the table and add the first varname to the row of value labels. That's the best I can do at the moment. Jim On Sun, May 1, 2016 at 11:19 AM, jpm miao <miaojpm at gmail.com> wrote:> Thanks. > Could we print the row/column names, "alpha1" and "alpha2" to the csv file? > > 2016-04-30 17:06 GMT-07:00 Jim Lemon <drjimlemon at gmail.com>: >> >> Hi jpm miao, >> I think you can get what you want like this: >> >> alpha1<-sample(LETTERS[1:3],50,TRUE) >> alpha2<-sample(LETTERS[1:2],50,TRUE) >> alphas<-data.frame(alpha1,alpha2) >> library(prettyR) >> alphatab<-xtab(alpha1~alpha2,alphas) >> sink("temp_table3.csv",append=TRUE) >> delim.xtab(alphatab,pct=NA,delim=",") >> sink() >> >> Jim >> >> On Sun, May 1, 2016 at 4:47 AM, jpm miao <miaojpm at gmail.com> wrote: >> > Jim, >> > >> > Thanks for creating such a fantastic package "prettyR". >> > I want to print the pretty frequency table (with row total and column >> > total) to an excel (or csv ) file. Is it possible? >> >>alphatab >> > >> > A B Total >> > A 8 10 18 >> > B 7 5 12 >> > C 9 11 20 >> > Total 24 26 50 >> > >> > Two issues I encountered (See the attached csv file). >> > 1. When I tried to print the above table to csv file, all elements on >> > the >> > same row are printed in one cell. >> > 2. If I write "delim.table(alpha tab)", the table is distorted (see >> > attached). Of course, I can adjust it manually but sometimes the number >> > of >> > files is big. >> > >> > Thanks! >> > >> > Miao >> > >> >> alpha1<-sample(LETTERS[1:3],50,TRUE) >> >> alpha2<-sample(LETTERS[1:2],50,TRUE) >> >> >> >> alphas<-data.frame(alpha1,alpha2) >> >> alphatab<-xtab(alpha1~alpha2,alphas) >> > Crosstabulation of alpha1 by alpha2 >> > alpha2 >> > alpha1 A B >> > A 8 10 18 >> > 44.44 55.56 - >> > 33.33 38.46 36.00 >> > >> > B 7 5 12 >> > 58.33 41.67 - >> > 29.17 19.23 24.00 >> > >> > C 9 11 20 >> > 45 55 - >> > 37.50 42.31 40.00 >> > >> > 24 26 50 >> > 48 52 100 >> >> delim.xtab(alphatab,pct=NA,interdigitate=TRUE) >> > alphatab >> > >> > A B Total >> > A 8 10 18 >> > B 7 5 12 >> > C 9 11 20 >> > Total 24 26 50 >> > >> >> sink("temp_table3.csv") >> >> delim.xtab(alphatab,pct=NA,interdigitate=TRUE) >> >> sink() >> >> sink("temp_table3.csv", append=TRUE) >> >> delim.table(alphatab) >> >> sink() >> >> sink("temp_table3.csv", append=TRUE) >> >> delim.table(alphatab) >> >> sink() >> >> ?delim.xtab >> > >> > >> > 2016-04-26 16:14 GMT-07:00 Jim Lemon <drjimlemon at gmail.com>: >> >> >> >> Hi jpm miao, >> >> You can get CSV files that can be imported into Excel like this: >> >> >> >> library(prettyR) >> >> sink("excel_table1.csv") >> >> delim.table(table(df[,c("y","z")])) >> >> sink() >> >> sink("excel_table2.csv") >> >> delim.table(as.data.frame(table(df[,c("y","z")])),label="") >> >> sink() >> >> sink("excel_table3.csv") >> >> delim.table(as.matrix(table(df[,c("y","z")])),label="") >> >> sink() >> >> >> >> Jim >> >> >> >> On Wed, Apr 27, 2016 at 8:35 AM, jpm miao <miaojpm at gmail.com> wrote: >> >> > Hi, >> >> > >> >> > How could we print the frequency table (produced by "table") to an >> >> > Excel >> >> > file? >> >> > Is there an easy way to do so? Thanks, >> >> > >> >> > Miao >> >> > >> >> >> df <- data.frame(x = 1:3, y = 3:1, z = letters[1:3]) >> >> > >> >> >> table(df[,c("y","z")]) >> >> > z >> >> > y a b c >> >> > 1 0 0 1 >> >> > 2 0 1 0 >> >> > 3 1 0 0 >> >> >> test<-table(df[,c("y","z")]) >> >> >> as.data.frame(test) >> >> > y z Freq >> >> > 1 1 a 0 >> >> > 2 2 a 0 >> >> > 3 3 a 1 >> >> > 4 1 b 0 >> >> > 5 2 b 1 >> >> > 6 3 b 0 >> >> > 7 1 c 1 >> >> > 8 2 c 0 >> >> > 9 3 c 0 >> >> >> as.matrix(test) >> >> > z >> >> > y a b c >> >> > 1 0 0 1 >> >> > 2 0 1 0 >> >> > 3 1 0 0 >> >> >> testm<-as.matrix(test) >> >> >> testm >> >> > z >> >> > y a b c >> >> > 1 0 0 1 >> >> > 2 0 1 0 >> >> > 3 1 0 0 >> >> >> typeof(testm) >> >> > [1] "integer" >> >> > >> >> > [[alternative HTML version deleted]] >> >> > >> >> > ______________________________________________ >> >> > R-help at 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. >> > >> > > >
Bert Gunter
2016-May-02 13:30 UTC
[R] How to print the frequency table (produced by the command "table" to Excel
Don't know if this would help, but you could always set an attribute of alphatab to be the dimnames. See ?attrib . Of course you would then have to write a custom print() function, possibly along the lines you indicated. You could also do this via S3 (or whatever) classes, of course. But again, none of this may be the sort of thing the OP could handle. Maybe my point is by improving her(?) R programming skills, she would gain the ability to do all sorts of such "customizations". Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Mon, May 2, 2016 at 2:58 AM, Jim Lemon <drjimlemon at gmail.com> wrote:> Hi jpm miao, > After a fair stretch of fooling around with it, I can't see any way to > add the variable names ("varnames") to the output of delim.table > without breaking it for things other than table objects. You can > probably do this as a one-off hack by setting the names of the > dimnames of the "counts" element in alphatab like this: > > names(dimnames(alphatab$counts))<-alphatab$varnames > > You can then shoehorn these into the output by adding a line to > display the second varname above the table and add the first varname > to the row of value labels. That's the best I can do at the moment. > > Jim > > > On Sun, May 1, 2016 at 11:19 AM, jpm miao <miaojpm at gmail.com> wrote: >> Thanks. >> Could we print the row/column names, "alpha1" and "alpha2" to the csv file? >> >> 2016-04-30 17:06 GMT-07:00 Jim Lemon <drjimlemon at gmail.com>: >>> >>> Hi jpm miao, >>> I think you can get what you want like this: >>> >>> alpha1<-sample(LETTERS[1:3],50,TRUE) >>> alpha2<-sample(LETTERS[1:2],50,TRUE) >>> alphas<-data.frame(alpha1,alpha2) >>> library(prettyR) >>> alphatab<-xtab(alpha1~alpha2,alphas) >>> sink("temp_table3.csv",append=TRUE) >>> delim.xtab(alphatab,pct=NA,delim=",") >>> sink() >>> >>> Jim >>> >>> On Sun, May 1, 2016 at 4:47 AM, jpm miao <miaojpm at gmail.com> wrote: >>> > Jim, >>> > >>> > Thanks for creating such a fantastic package "prettyR". >>> > I want to print the pretty frequency table (with row total and column >>> > total) to an excel (or csv ) file. Is it possible? >>> >>alphatab >>> > >>> > A B Total >>> > A 8 10 18 >>> > B 7 5 12 >>> > C 9 11 20 >>> > Total 24 26 50 >>> > >>> > Two issues I encountered (See the attached csv file). >>> > 1. When I tried to print the above table to csv file, all elements on >>> > the >>> > same row are printed in one cell. >>> > 2. If I write "delim.table(alpha tab)", the table is distorted (see >>> > attached). Of course, I can adjust it manually but sometimes the number >>> > of >>> > files is big. >>> > >>> > Thanks! >>> > >>> > Miao >>> > >>> >> alpha1<-sample(LETTERS[1:3],50,TRUE) >>> >> alpha2<-sample(LETTERS[1:2],50,TRUE) >>> >> >>> >> alphas<-data.frame(alpha1,alpha2) >>> >> alphatab<-xtab(alpha1~alpha2,alphas) >>> > Crosstabulation of alpha1 by alpha2 >>> > alpha2 >>> > alpha1 A B >>> > A 8 10 18 >>> > 44.44 55.56 - >>> > 33.33 38.46 36.00 >>> > >>> > B 7 5 12 >>> > 58.33 41.67 - >>> > 29.17 19.23 24.00 >>> > >>> > C 9 11 20 >>> > 45 55 - >>> > 37.50 42.31 40.00 >>> > >>> > 24 26 50 >>> > 48 52 100 >>> >> delim.xtab(alphatab,pct=NA,interdigitate=TRUE) >>> > alphatab >>> > >>> > A B Total >>> > A 8 10 18 >>> > B 7 5 12 >>> > C 9 11 20 >>> > Total 24 26 50 >>> > >>> >> sink("temp_table3.csv") >>> >> delim.xtab(alphatab,pct=NA,interdigitate=TRUE) >>> >> sink() >>> >> sink("temp_table3.csv", append=TRUE) >>> >> delim.table(alphatab) >>> >> sink() >>> >> sink("temp_table3.csv", append=TRUE) >>> >> delim.table(alphatab) >>> >> sink() >>> >> ?delim.xtab >>> > >>> > >>> > 2016-04-26 16:14 GMT-07:00 Jim Lemon <drjimlemon at gmail.com>: >>> >> >>> >> Hi jpm miao, >>> >> You can get CSV files that can be imported into Excel like this: >>> >> >>> >> library(prettyR) >>> >> sink("excel_table1.csv") >>> >> delim.table(table(df[,c("y","z")])) >>> >> sink() >>> >> sink("excel_table2.csv") >>> >> delim.table(as.data.frame(table(df[,c("y","z")])),label="") >>> >> sink() >>> >> sink("excel_table3.csv") >>> >> delim.table(as.matrix(table(df[,c("y","z")])),label="") >>> >> sink() >>> >> >>> >> Jim >>> >> >>> >> On Wed, Apr 27, 2016 at 8:35 AM, jpm miao <miaojpm at gmail.com> wrote: >>> >> > Hi, >>> >> > >>> >> > How could we print the frequency table (produced by "table") to an >>> >> > Excel >>> >> > file? >>> >> > Is there an easy way to do so? Thanks, >>> >> > >>> >> > Miao >>> >> > >>> >> >> df <- data.frame(x = 1:3, y = 3:1, z = letters[1:3]) >>> >> > >>> >> >> table(df[,c("y","z")]) >>> >> > z >>> >> > y a b c >>> >> > 1 0 0 1 >>> >> > 2 0 1 0 >>> >> > 3 1 0 0 >>> >> >> test<-table(df[,c("y","z")]) >>> >> >> as.data.frame(test) >>> >> > y z Freq >>> >> > 1 1 a 0 >>> >> > 2 2 a 0 >>> >> > 3 3 a 1 >>> >> > 4 1 b 0 >>> >> > 5 2 b 1 >>> >> > 6 3 b 0 >>> >> > 7 1 c 1 >>> >> > 8 2 c 0 >>> >> > 9 3 c 0 >>> >> >> as.matrix(test) >>> >> > z >>> >> > y a b c >>> >> > 1 0 0 1 >>> >> > 2 0 1 0 >>> >> > 3 1 0 0 >>> >> >> testm<-as.matrix(test) >>> >> >> testm >>> >> > z >>> >> > y a b c >>> >> > 1 0 0 1 >>> >> > 2 0 1 0 >>> >> > 3 1 0 0 >>> >> >> typeof(testm) >>> >> > [1] "integer" >>> >> > >>> >> > [[alternative HTML version deleted]] >>> >> > >>> >> > ______________________________________________ >>> >> > R-help at 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. >>> > >>> > >> >> > > ______________________________________________ > R-help at 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.