Dear David,
Thank you for you quite response.
My apologies for not giving some sample data - this is due to AVG.
*But this minisample should not be a problem (all in Dutch)*:
teamq
# A tibble: 4 x 2
`Ik volg bijscholing om mijn opleiders-kwaliteiten op peil te houden`
<chr>
1 de situatie in hoge mate van toepassing is voor u of uw
supervisorengroep
2 de situatie in zeer hoge mate van toepassing is voor u of uw
supervisorengroep
3 de situatie in zeer hoge mate van toepassing is voor u of uw
supervisorengroep
4 de situatie in geringe mate van toepassing is voor u of uw
supervisorengroep
`Ik weet precies wat de ?modernisering van de opleiding? inhoudt`
<chr>
1 de situatie in hoge mate van toepassing is voor u of uw
supervisorengroep
2 de situatie in zeer hoge mate van toepassing is voor u of uw
supervisorengroep
3 de situatie in zeer hoge mate van toepassing is voor u of uw
supervisorengroep
4 de situatie in geringe mate van toepassing is voor u of uw
supervisorengroep
As you see the likert items are in words, and I should change them in
nummeric - Am I correct?
*To do this, I tried (see further below):*
plyr rename() ; I receive the message it should be a factor or character
dplyr recode() ; same message
mapvalues() ; it should be atomic, so I used as.atomic(teamq) but then I
receive the nummers a strings.
*The syntaxes*
require(plyr)
example2 <- revalue(teamq,
c("de situatie in zeer geringe mate van toepassing is
voor u of uw supervisorengroep"= "1",
"de situatie in geringe mate van toepassing is voor
u of uw supervisorengroep"= "2",
"de situatie enigszins van toepassing is voor u of
uw supervisorengroep"= "3",
"de situatie in hoge mate van toepassing is voor u
of uw supervisorengroep"= "4",
"de situatie in zeer hoge mate van toepassing is
voor u of uw supervisorengroep"= "5"))
require(dplyr)
example2 <- recode(teamq,
c("de situatie in zeer geringe mate van toepassing is
voor u of uw supervisorengroep"= "1",
"de situatie in geringe mate van toepassing is voor u
of uw supervisorengroep"= "2",
"de situatie enigszins van toepassing is voor u of uw
supervisorengroep"= "3",
"de situatie in hoge mate van toepassing is voor u of
uw supervisorengroep"= "4",
"de situatie in zeer hoge mate van toepassing is voor
u of uw supervisorengroep"= "5"))
mapvalues(as.matrix(teamq), from = c("de situatie in zeer geringe mate van
toepassing is voor u of uw supervisorengroep",
"de situatie in geringe mate van toepassing is voor
u of uw supervisorengroep",
"de situatie enigszins van toepassing is voor u of
uw supervisorengroep",
"de situatie in hoge mate van toepassing is voor u
of uw supervisorengroep",
"de situatie in zeer hoge mate van toepassing is
voor u of uw supervisorengroep"),
to = c(1,2,3,4,5))
What should I do?
Thank you in advance, Roberto
Op ma 22 okt. 2018 om 17:13 schreef David L Carlson <dcarlson at
tamu.edu>:
> Your example is not reproducible since you did not give us some sample
> data. I suspect that your data frame consists of columns that represent
> questions and rows that represent individuals who answered the questions.
> First create a simple example:
>
> set.seed(42)
> teamq <- data.frame(V1=sample(c(1, 2, 4, 5), 25, replace = TRUE),
> V2=sample(c(1, 2, 3, 4, 5), 25, replace=TRUE),
> V3=sample(c(2, 3, 4, 5), 25, replace=TRUE))
>
> Notice that this data frame ONLY contains questions (and only 3
> questions). Here are 2 ways to get what you want. The first one stacks the
> data:
>
> teamq.stack <- stack(teamq)
> str(teamq.stack)
> counts <- table(teamq.stack)
> str(counts)
>
> The second one converts each column to a factor with levels 1 - 5:
>
> teamq2 <- data.frame(lapply(teamq, factor, levels=1:5))
> str(teamq2)
> counts <- sapply(teamq2, table)
> str(counts)
>
> Now make the plots:
>
> cols <- c("yellow","sandybrown","orange",
"darkolivegreen","green")
> barplot(counts[, 1], horiz=TRUE, col=cols, legend=TRUE)
> barplot(counts[, 2], horiz=TRUE, col=cols, legend=TRUE)
> barplot(counts[, 3], horiz=TRUE, col=cols, legend=TRUE)
>
> You will need to adjust the xlim= argument so that the legend does not
> print on top of the bars.
>
> ----------------------------------------
> David L Carlson
> Department of Anthropology
> Texas A&M University
> College Station, TX 77843-4352
>
>
> -----Original Message-----
> From: R-help <r-help-bounces at r-project.org> On Behalf Of P.
Roberto Bakker
> Sent: Monday, October 22, 2018 9:04 AM
> To: R mailing list <r-help at r-project.org>
> Subject: [R] Different stack barplots - same color legends
>
> Hi,
>
> I want to make barplots from different questions (columns) in one
> data.frame.
> Each question has the same 5 likert items.
> Now the problem: in some questions all items are answered; in other less.
> From the syntax below I get nice stack barplots - *but the legend colors do
> not* refer to the same likert-item, which I understand - the colors go in
> sequence along the table.
> Question: how can I write a syntax that each likert-item has the same
> legend color?
> Thank you in advance,
>
> Roberto
>
> SYNTAX:
> counts19 <- table(teamq[,19])
> counts20 <- table(teamq[,20])
> barplot(as.matrix(counts19), horiz = T,
> col=c("yellow","sandybrown","orange",
"darkolivegreen","green"),
> legend=T)
> barplot(as.matrix(counts20), horiz = T,
> col=c("yellow","sandybrown","orange",
"darkolivegreen","green"),
> legend=T)
>
> [[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]]
Richard M. Heiberger
2018-Oct-22 18:10 UTC
[R] Different stack barplots - same color legends
Try the likert function in
install.packages("HH) ## if necessary
library(HH)
Then using David Carlson's example teamq
likert(teamq)
Your example in the 1:30PM (Eastern Daylight Time) doesn't work.
Error in revalue(teamq, c(`de situatie in zeer geringe mate van
toepassing is\nvoor u of uw supervisorengroep` = "1", :
x is not a factor or a character vector.
There are many examples in
?likert
Rich
On Mon, Oct 22, 2018 at 1:30 PM, P. Roberto Bakker
<robertobakker at gmail.com> wrote:> Dear David,
>
> Thank you for you quite response.
> My apologies for not giving some sample data - this is due to AVG.
> *But this minisample should not be a problem (all in Dutch)*:
> teamq
> # A tibble: 4 x 2
> `Ik volg bijscholing om mijn opleiders-kwaliteiten op peil te houden`
>
> <chr>
>
> 1 de situatie in hoge mate van toepassing is voor u of uw
> supervisorengroep
> 2 de situatie in zeer hoge mate van toepassing is voor u of uw
> supervisorengroep
> 3 de situatie in zeer hoge mate van toepassing is voor u of uw
> supervisorengroep
> 4 de situatie in geringe mate van toepassing is voor u of uw
> supervisorengroep
> `Ik weet precies wat de ?modernisering van de opleiding? inhoudt`
>
> <chr>
>
> 1 de situatie in hoge mate van toepassing is voor u of uw
> supervisorengroep
> 2 de situatie in zeer hoge mate van toepassing is voor u of uw
> supervisorengroep
> 3 de situatie in zeer hoge mate van toepassing is voor u of uw
> supervisorengroep
> 4 de situatie in geringe mate van toepassing is voor u of uw
> supervisorengroep
>
> As you see the likert items are in words, and I should change them in
> nummeric - Am I correct?
>
> *To do this, I tried (see further below):*
> plyr rename() ; I receive the message it should be a factor or character
> dplyr recode() ; same message
> mapvalues() ; it should be atomic, so I used as.atomic(teamq) but then I
> receive the nummers a strings.
>
> *The syntaxes*
> require(plyr)
> example2 <- revalue(teamq,
> c("de situatie in zeer geringe mate van toepassing
is
> voor u of uw supervisorengroep"= "1",
> "de situatie in geringe mate van toepassing is
voor
> u of uw supervisorengroep"= "2",
> "de situatie enigszins van toepassing is voor
u of
> uw supervisorengroep"= "3",
> "de situatie in hoge mate van toepassing is
voor u
> of uw supervisorengroep"= "4",
> "de situatie in zeer hoge mate van toepassing
is
> voor u of uw supervisorengroep"= "5"))
>
> require(dplyr)
> example2 <- recode(teamq,
> c("de situatie in zeer geringe mate van toepassing
is
> voor u of uw supervisorengroep"= "1",
> "de situatie in geringe mate van toepassing is
voor u
> of uw supervisorengroep"= "2",
> "de situatie enigszins van toepassing is voor u
of uw
> supervisorengroep"= "3",
> "de situatie in hoge mate van toepassing is voor
u of
> uw supervisorengroep"= "4",
> "de situatie in zeer hoge mate van toepassing is
voor
> u of uw supervisorengroep"= "5"))
>
> mapvalues(as.matrix(teamq), from = c("de situatie in zeer geringe mate
van
> toepassing is voor u of uw supervisorengroep",
> "de situatie in geringe mate van toepassing is
voor
> u of uw supervisorengroep",
> "de situatie enigszins van toepassing is voor
u of
> uw supervisorengroep",
> "de situatie in hoge mate van toepassing is
voor u
> of uw supervisorengroep",
> "de situatie in zeer hoge mate van toepassing
is
> voor u of uw supervisorengroep"),
> to = c(1,2,3,4,5))
>
> What should I do?
> Thank you in advance, Roberto
>
> Op ma 22 okt. 2018 om 17:13 schreef David L Carlson <dcarlson at
tamu.edu>:
>
>> Your example is not reproducible since you did not give us some sample
>> data. I suspect that your data frame consists of columns that represent
>> questions and rows that represent individuals who answered the
questions.
>> First create a simple example:
>>
>> set.seed(42)
>> teamq <- data.frame(V1=sample(c(1, 2, 4, 5), 25, replace = TRUE),
>> V2=sample(c(1, 2, 3, 4, 5), 25, replace=TRUE),
>> V3=sample(c(2, 3, 4, 5), 25, replace=TRUE))
>>
>> Notice that this data frame ONLY contains questions (and only 3
>> questions). Here are 2 ways to get what you want. The first one stacks
the
>> data:
>>
>> teamq.stack <- stack(teamq)
>> str(teamq.stack)
>> counts <- table(teamq.stack)
>> str(counts)
>>
>> The second one converts each column to a factor with levels 1 - 5:
>>
>> teamq2 <- data.frame(lapply(teamq, factor, levels=1:5))
>> str(teamq2)
>> counts <- sapply(teamq2, table)
>> str(counts)
>>
>> Now make the plots:
>>
>> cols <-
c("yellow","sandybrown","orange",
"darkolivegreen","green")
>> barplot(counts[, 1], horiz=TRUE, col=cols, legend=TRUE)
>> barplot(counts[, 2], horiz=TRUE, col=cols, legend=TRUE)
>> barplot(counts[, 3], horiz=TRUE, col=cols, legend=TRUE)
>>
>> You will need to adjust the xlim= argument so that the legend does not
>> print on top of the bars.
>>
>> ----------------------------------------
>> David L Carlson
>> Department of Anthropology
>> Texas A&M University
>> College Station, TX 77843-4352
>>
>>
>> -----Original Message-----
>> From: R-help <r-help-bounces at r-project.org> On Behalf Of P.
Roberto Bakker
>> Sent: Monday, October 22, 2018 9:04 AM
>> To: R mailing list <r-help at r-project.org>
>> Subject: [R] Different stack barplots - same color legends
>>
>> Hi,
>>
>> I want to make barplots from different questions (columns) in one
>> data.frame.
>> Each question has the same 5 likert items.
>> Now the problem: in some questions all items are answered; in other
less.
>> From the syntax below I get nice stack barplots - *but the legend
colors do
>> not* refer to the same likert-item, which I understand - the colors go
in
>> sequence along the table.
>> Question: how can I write a syntax that each likert-item has the same
>> legend color?
>> Thank you in advance,
>>
>> Roberto
>>
>> SYNTAX:
>> counts19 <- table(teamq[,19])
>> counts20 <- table(teamq[,20])
>> barplot(as.matrix(counts19), horiz = T,
>>
col=c("yellow","sandybrown","orange",
"darkolivegreen","green"),
>> legend=T)
>> barplot(as.matrix(counts20), horiz = T,
>>
col=c("yellow","sandybrown","orange",
"darkolivegreen","green"),
>> legend=T)
>>
>> [[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]]
>
> ______________________________________________
> 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.
Thank you for you information. Package 'HH' is interesting. Now I find another problem when using 'likert(teamq)' I get an error message:> likert(teamq)Error in dimnames(x) <- `*vtmp*` : length of 'dimnames' [2] not equal to array extent I checked:> dim(teamq)[1] 4 2> ncol(teamq)[1] 2 So it should be good. I used 'make.names' , in case the spaces in the variable names would be a problem. Same error. What could I do? Best and thank you in advance. Roberto Op ma 22 okt. 2018 om 20:10 schreef Richard M. Heiberger <rmh at temple.edu>:> Try the likert function in > install.packages("HH) ## if necessary > library(HH) > > Then using David Carlson's example teamq > likert(teamq) > > Your example in the 1:30PM (Eastern Daylight Time) doesn't work. > Error in revalue(teamq, c(`de situatie in zeer geringe mate van > toepassing is\nvoor u of uw supervisorengroep` = "1", : > x is not a factor or a character vector. > > There are many examples in > ?likert > > Rich > > > On Mon, Oct 22, 2018 at 1:30 PM, P. Roberto Bakker > <robertobakker at gmail.com> wrote: > > Dear David, > > > > Thank you for you quite response. > > My apologies for not giving some sample data - this is due to AVG. > > *But this minisample should not be a problem (all in Dutch)*: > > teamq > > # A tibble: 4 x 2 > > `Ik volg bijscholing om mijn opleiders-kwaliteiten op peil te houden` > > > > <chr> > > > > 1 de situatie in hoge mate van toepassing is voor u of uw > > supervisorengroep > > 2 de situatie in zeer hoge mate van toepassing is voor u of uw > > supervisorengroep > > 3 de situatie in zeer hoge mate van toepassing is voor u of uw > > supervisorengroep > > 4 de situatie in geringe mate van toepassing is voor u of uw > > supervisorengroep > > `Ik weet precies wat de ?modernisering van de opleiding? inhoudt` > > > > <chr> > > > > 1 de situatie in hoge mate van toepassing is voor u of uw > > supervisorengroep > > 2 de situatie in zeer hoge mate van toepassing is voor u of uw > > supervisorengroep > > 3 de situatie in zeer hoge mate van toepassing is voor u of uw > > supervisorengroep > > 4 de situatie in geringe mate van toepassing is voor u of uw > > supervisorengroep > > > > As you see the likert items are in words, and I should change them in > > nummeric - Am I correct? > > > > *To do this, I tried (see further below):* > > plyr rename() ; I receive the message it should be a factor or character > > dplyr recode() ; same message > > mapvalues() ; it should be atomic, so I used as.atomic(teamq) but then I > > receive the nummers a strings. > > > > *The syntaxes* > > require(plyr) > > example2 <- revalue(teamq, > > c("de situatie in zeer geringe mate van toepassing is > > voor u of uw supervisorengroep"= "1", > > "de situatie in geringe mate van toepassing is > voor > > u of uw supervisorengroep"= "2", > > "de situatie enigszins van toepassing is voor u > of > > uw supervisorengroep"= "3", > > "de situatie in hoge mate van toepassing is voor > u > > of uw supervisorengroep"= "4", > > "de situatie in zeer hoge mate van toepassing is > > voor u of uw supervisorengroep"= "5")) > > > > require(dplyr) > > example2 <- recode(teamq, > > c("de situatie in zeer geringe mate van toepassing is > > voor u of uw supervisorengroep"= "1", > > "de situatie in geringe mate van toepassing is > voor u > > of uw supervisorengroep"= "2", > > "de situatie enigszins van toepassing is voor u of > uw > > supervisorengroep"= "3", > > "de situatie in hoge mate van toepassing is voor u > of > > uw supervisorengroep"= "4", > > "de situatie in zeer hoge mate van toepassing is > voor > > u of uw supervisorengroep"= "5")) > > > > mapvalues(as.matrix(teamq), from = c("de situatie in zeer geringe mate > van > > toepassing is voor u of uw supervisorengroep", > > "de situatie in geringe mate van toepassing is > voor > > u of uw supervisorengroep", > > "de situatie enigszins van toepassing is voor u > of > > uw supervisorengroep", > > "de situatie in hoge mate van toepassing is voor > u > > of uw supervisorengroep", > > "de situatie in zeer hoge mate van toepassing is > > voor u of uw supervisorengroep"), > > to = c(1,2,3,4,5)) > > > > What should I do? > > Thank you in advance, Roberto > > > > Op ma 22 okt. 2018 om 17:13 schreef David L Carlson <dcarlson at tamu.edu>: > > > >> Your example is not reproducible since you did not give us some sample > >> data. I suspect that your data frame consists of columns that represent > >> questions and rows that represent individuals who answered the > questions. > >> First create a simple example: > >> > >> set.seed(42) > >> teamq <- data.frame(V1=sample(c(1, 2, 4, 5), 25, replace = TRUE), > >> V2=sample(c(1, 2, 3, 4, 5), 25, replace=TRUE), > >> V3=sample(c(2, 3, 4, 5), 25, replace=TRUE)) > >> > >> Notice that this data frame ONLY contains questions (and only 3 > >> questions). Here are 2 ways to get what you want. The first one stacks > the > >> data: > >> > >> teamq.stack <- stack(teamq) > >> str(teamq.stack) > >> counts <- table(teamq.stack) > >> str(counts) > >> > >> The second one converts each column to a factor with levels 1 - 5: > >> > >> teamq2 <- data.frame(lapply(teamq, factor, levels=1:5)) > >> str(teamq2) > >> counts <- sapply(teamq2, table) > >> str(counts) > >> > >> Now make the plots: > >> > >> cols <- c("yellow","sandybrown","orange", "darkolivegreen","green") > >> barplot(counts[, 1], horiz=TRUE, col=cols, legend=TRUE) > >> barplot(counts[, 2], horiz=TRUE, col=cols, legend=TRUE) > >> barplot(counts[, 3], horiz=TRUE, col=cols, legend=TRUE) > >> > >> You will need to adjust the xlim= argument so that the legend does not > >> print on top of the bars. > >> > >> ---------------------------------------- > >> David L Carlson > >> Department of Anthropology > >> Texas A&M University > >> College Station, TX 77843-4352 > >> > >> > >> -----Original Message----- > >> From: R-help <r-help-bounces at r-project.org> On Behalf Of P. Roberto > Bakker > >> Sent: Monday, October 22, 2018 9:04 AM > >> To: R mailing list <r-help at r-project.org> > >> Subject: [R] Different stack barplots - same color legends > >> > >> Hi, > >> > >> I want to make barplots from different questions (columns) in one > >> data.frame. > >> Each question has the same 5 likert items. > >> Now the problem: in some questions all items are answered; in other > less. > >> From the syntax below I get nice stack barplots - *but the legend > colors do > >> not* refer to the same likert-item, which I understand - the colors go > in > >> sequence along the table. > >> Question: how can I write a syntax that each likert-item has the same > >> legend color? > >> Thank you in advance, > >> > >> Roberto > >> > >> SYNTAX: > >> counts19 <- table(teamq[,19]) > >> counts20 <- table(teamq[,20]) > >> barplot(as.matrix(counts19), horiz = T, > >> col=c("yellow","sandybrown","orange", "darkolivegreen","green"), > >> legend=T) > >> barplot(as.matrix(counts20), horiz = T, > >> col=c("yellow","sandybrown","orange", "darkolivegreen","green"), > >> legend=T) > >> > >> [[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]] > > > > ______________________________________________ > > 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]]