Sep 28, 2015

Kod R: Klassifikasi nama harian kepada hari biasa atau hari minggu

Situasi: anda dah ada jadual data dan salah satu ruangan(column) adalah data hari-hari dalam minggu tersebut: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday

Kehendak: Klasifikasikan hari-hari tersebut kepada Weekdays (hari biasa) atau Weekend (hari minggu).

Cara 1

data_by_weekdays <- function(activity) {
    activity$weekday <- as.factor(weekdays(activity$date)) # weekdays
    weekend_data <- subset(activity, weekday %in% c("Saturday","Sunday"))
    weekday_data <- subset(activity, !weekday %in% c("Saturday","Sunday"))

    weekend_steps <- weekdays_steps(weekend_data)
    weekday_steps <- weekdays_steps(weekday_data)

    weekend_steps$dayofweek <- rep("weekend", nrow(weekend_steps))
    weekday_steps$dayofweek <- rep("weekday", nrow(weekday_steps))

    data_by_weekdays <- rbind(weekend_steps, weekday_steps)
    data_by_weekdays$dayofweek <- as.factor(data_by_weekdays$dayofweek)
    data_by_weekdays
}

data_weekdays <- data_by_weekdays(activity)


 Cara 2

weekday.or.weekend <- function(date) {
    day <- weekdays(date)
    if (day %in% c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday"))
        return("weekday")
    else if (day %in% c("Saturday", "Sunday"))
        return("weekend")
    else
        stop("invalid date")
}
filled.df$date <- as.Date(filled.df$date)
filled.df$day <- sapply(filled.df$date, FUN=weekday.or.weekend)


Cara 3

day <- weekdays(dtaImputed$date)
daytype <- vector()
for (i in 1:nrow(dtaImputed)) {
    if (day[i] == "Saturday" | day[i] == "Saturday") {
        daytype[i] <- "Weekend" } 
    else {
        daytype[i] <- "Weekday" }
}
dtaImputed$daytype <- daytype 



Cara 4

merged_table_new$day <- weekdays(as.Date(merged_table_new$date)) 
week <- function(x){if(x %in% c('Saturday', 'Sunday'))
{return('Weekend')} else {return('Weekday')}
}
merged_table$type <- as.factor(apply(as.matrix(merged_table_new$day), 1, week))


Perhatikan kod-kod diatas tu, fahamkan dan pilih mana yang sesuai. Cara berlainan, jawapan sama je... nukilan #datasaintis untuk anda.
#Rcode - reclassify days name to weekdays/weekend

No comments:

Post a Comment