我有多個 csv 檔案,其中包含“timestamp”和“users_holding”列,我能夠將時間戳列拆分為“Date”和“Time”兩列。我現在正在嘗試對每個檔案的時間列進行四舍五入。四舍五入后,我想再次重新組合這兩列并洗掉任何雙行。一個檔案的代碼如下:
data <- separate(data = data, col = timestamp, into = c('Date', 'Time'), sep = ' ')
as_hms(data$Time)
data$Time <- round_hms(as_hms(data$Time), 60*60)
data$timestamp <- paste(data$Date,data$Time)
data <- data[!duplicated(data$timestamp), ]
一個編碼的 for 回圈來分隔列。但是我無法為其他步驟構建代碼。我當前的代碼如下:
#Separate all timestamps into Date and Time
files <- list.files(pattern = "*csv")
df_list <- lapply(files,read_csv)
df <- bind_rows(df_list)
st_datasets <- df_list
updated_datasets_st <- list()
for (i in 1:length(st_datasets)){
d <- st_datasets[[i]] %>% separate(col = timestamp, into = c('Date', 'Time'), sep = ' ')
updated_datasets_st[[i]] <- d
}
#need help for this part. The code above is working
for (i in 1:length(st_datasets)){
d <- st_datasets[[i]] %>% round_hms(as_hms(st_datasets$Time), 60*60)
updated_datasets_st[[i]] <- d
}
uj5u.com熱心網友回復:
好吧,這是一個代碼問題。對不起。嘆。
您使用迭代器呼叫具有資料集串列的資料集。但是,當您撰寫時st_datasets$Time,沒有迭代器——如果您在其中添加一個,它將無法作業。
您仍然可以回圈或矢量化。我提供了這兩種方法。
使用矢量化
updt = lapply(1:length(st_datasets),
function(i){
st_datasets[[i]]$Time <- round_hms(as_hms(st_datasets[[i]]$Time), 60*60)
st_datasets[[i]]
})
使用for回圈
upper = list()
for(i in 1:length(st_datasets)){
st_ds = st_datasets[[i]]
st_ds$Time = round_hms(as_hms(st_ds$Time), 60*60)
upper[[i]] <- st_ds
}
upper
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/465273.html
上一篇:在Python中不中斷回圈
