Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Research panel analysis in R

Tags:

r

I am a newbie to Stackoverflow, stats and R, so apologies for the simple nature of my question/request for advice:

I am completing analysis of a large data-set comprising of 2 files: a txt containing internal temperature data and a second SPSS data file.

To kick off, I have exported the SPSS data into CSV format and stripped back to contain just the few columns i think i need - house type and occupant type. I have imported all the temperature data and merged the two using a common identifier.

So now I have a merged data frame, containing all the data i need (to begin with) to start completing some analysis.

First question: I have year, date and time as separate columns. However the time column has imported with an incorrect date before "30/12/1899". How can i delete the date part of all observations from this column, but retain the time?

Second question Similar to above, the date colum shows the correct date, but has the time following, which is not correct (every observation showing 00:00:00), how can I delete all the times from this column?

Third question How can I combine the correct Time with correct date, to end up with DD/MM/YYYY HH:MM:SS

Fourth question Should i create subsets of merged to facilitate the analysis: ie: each house type (seperate subsets) vs temp, time and occupant type?

like image 770
Cairan Van Rooyen Avatar asked Nov 08 '22 01:11

Cairan Van Rooyen


1 Answers

  1. Dates can be brought in as they are instead of factor via the parameter as.is = TRUE i.e.

    data <- read.csv(choose.files(), as.is = T)
    

I would try reading the csv file again and then working with the date time. It will come in as a chron or some format like that and you'll need to change it to Posixct, well I do anyway. To view help on a function, type question mark followed by function name i.e. ?as.posixct.

Date.Time: chron "2018/08/04 10:10:00", ... # '%Y-%m-%d %H:%M:%S' current format as read in from my system.

# Date format you want is '%d/%m/%Y %H:%M'
# tz='' is an empty time zone can't remember exactly you probably should read up on
# finally on the left side of the assign <- I am creating a new column Date. 
# You can over write the old column, Date.Time, but can't hurt to learn how to delete
# a column.
data$Date <- as.POSIXct(date$Date.Time, tz='', '%d/%m/%Y %H:%M:%S')

# Now remove the original column. -Date.Time take out Date.Time, if you leave the
# minus out, the data will contain the subset Date.Time and no other columns.
data <- subset(data, select =  -Date.Time)

Try this first, and I will look into removing time with in a date field. I have an idea, but I'd rather see if this helps with the problem first.

Though if you do want to merge the Year, month, day columns, you could try something like this, seem like a logical thing to do, you can always keep the original format and delete it later. It's not hurting anything.

data$YMD <- paste(data$Year," ",
                  data$Month, " ",
                  data$Day)

Also while you are at it. Install a library called dplyr, written by the same guy that did ggplot2, Hadley....

install.packages("dplyr")

# The add it to the top of your file like ggplot.
library(dplyr)
like image 147
tcratius Avatar answered Nov 28 '22 10:11

tcratius