如何在 R 中的 for 循环中使用 as_hms
How to use as_hms in a for loop in R
我有多个包含“时间戳”和“users_holding”列的 csv 文件,我能够将时间戳列拆分为“日期”和“时间”两列。我现在正在尝试汇总每个文件的时间列。四舍五入后,我想再次重新组合两列并删除任何双行。一个文件的代码如下:
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), ]
A 编写了一个 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
}
好的,这是一个代码问题。对不起。唉。
您使用迭代器调用包含数据集列表的数据集。但是,当您编写 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
我有多个包含“时间戳”和“users_holding”列的 csv 文件,我能够将时间戳列拆分为“日期”和“时间”两列。我现在正在尝试汇总每个文件的时间列。四舍五入后,我想再次重新组合两列并删除任何双行。一个文件的代码如下:
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), ]
A 编写了一个 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
}
好的,这是一个代码问题。对不起。唉。
您使用迭代器调用包含数据集列表的数据集。但是,当您编写 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