Ggplot2 one row for each row of data

I have a CSV file that contains the following data:

user,Measurement1,Measurement2,Measurement3,group 1,0.1,0.7,0.2,3 2,0.3,0.3,0.4,2 3,0.3,0.3,0.4,2 

I need to build one line for each user. The x axis can be as little as 1.2.3 (one point for each dimension marked as before, after, but I can work out the marking later). The color will be set by the columns of the group. I found a plot similar to the one I need, but I do not want to use the user code as the value of x.

+4
source share
1 answer

ggplot likes data in the "long" format: i.e. a column for each dimension and a row for each observation. Your data is currently "wide". Use the reshape package to move from one to another.

Do I understand correctly that you want Measurement1, Measurement2 and Measurement3 to be on the x axis? (So ​​in your data, user line 1 will go from 0.1 to 0.7 to 0.2? If so, would you like something like this:

 require(reshape) #Recreate your data frame user <- gl(3, 1) Meas1 <- c(0.7, 0.3, 0.3) Meas2 <- c(0.7, 0.3, 0.3) Meas3 <- c(0.2, 0.4, 0.4) group <- c(3, 2, 2) df <- data.frame(user=user, Meas1=Meas1, Meas2=Meas2, Meas3=Meas3, group=group) #'melt' the data frame into long format dfm <- melt(df, id.vars=c("user", "group")) ggplot(dfm, aes(x=as.numeric(variable), y=value, colour=user)) + geom_line() 

enter image description here

+6
source

Source: https://habr.com/ru/post/1439791/


All Articles