Datamanipulering med data.table i R
Matt Dowle, Arun Srinivasan
Instructors, DataCamp
Säg att vi vill ändra rad 2 i kolumnen "y" till 10
df <- data.frame(x = 1:5, y = 6:10)
df
x y
1 6
2 7
df$y[2] <- 10
I R < v3.1.0 resulterade den här operationen i en djup kopia av hela data.frame
# what happens internally prior to R v3.1.0
tmp <- <deep copy of "df">
tmp$y[2] <- 10
df <- tmp
I v3.1.0 gjordes förbättringar så att bara den uppdaterade kolumnen kopieras djupt
Här kopieras bara kolumnerna a och b djupt i operationen nedan på df
df <- data.frame(a = 1:3, b = 4:6, c = 7:9, d = 10:12)
df[1:2] <- lapply(df[1:2], function(x) ifelse(x%%2, x, NA))
df
a b c d
1 NA 7 10
NA 5 8 11
3 NA 9 12
data.table uppdaterar kolumner på plats, dvs. med referens
Det innebär att du inte behöver tilldela resultatet till en variabel
Ingen kopia av någon kolumn skapas när värdena ändras
data.table använder operatorn := för att lägga till, uppdatera och ta bort kolumner med referens
batrips[, c("is_dur_gt_1hour", "week_day") := list(duration > 3600, wday(start_date))]# When adding a single column quotes aren't necessary batrips[, is_dur_gt_1hour := duration > 3600]
batrips[, `:=`(is_dur_gt_1hour = NULL,
start_station = toupper(start_station))]
Datamanipulering med data.table i R