R 按时间对数据帧列表进行子集设置
我有多个.csv文件中的GPS数据,我已使用以下代码导入这些文件:R 按时间对数据帧列表进行子集设置,r,list,dataframe,time,subset,R,List,Dataframe,Time,Subset,我有多个.csv文件中的GPS数据,我已使用以下代码导入这些文件: library(readr) library(tidyverse) # Data import from target folder filelist <- list.files("data", pattern = "*.csv") filenames <- paste(mgsub::mgsub(filelist, c(
library(readr)
library(tidyverse)
# Data import from target folder
filelist <- list.files("data", pattern = "*.csv")
filenames <- paste(mgsub::mgsub(filelist,
c("_", "samples.csv", "[[:digit:]]+"),
c("", "", "")), sep = "")
setwd("data")
data <- sapply(filelist,
read_csv,
col_types = cols(Uhrzeit = col_time(format = "%H:%M:%OS"),
Uhrzeit_1 = col_time(format = "%H:%M:%OS")),
simplify = FALSE)
names(data) <- filenames
colnames <- c("Aufnahmezeit",
"Uhrzeit",
"Herzfrequenz [S/min]",
"Geschwindigkeit [km/h]",
"Distanz [m]",
"Beschleunigung [m/s²]",
"Schrittfrequenz")
data <- lapply(data, setNames, colnames)
现在,我想使用重命名的列“Uhrzeit”作为参考点对数据进行子集划分。我尝试了以下方法:
lapply(data, subset(Uhrzeit >= 46000))
返回此错误的:
Error in subset.default(data, Uhrzeit >= 46000) :
object 'Uhrzeit' not found
我推测我需要为lappy函数创建一个列表来使用,例如as.list(data),但也无法让它工作
任何帮助都将不胜感激 试试看:
lapply(data, function(x) subset(x, Uhrzeit >= 46000))
或者使用dplyr
和map
library(dplyr)
purrr::map(data, ~.x %>% filter(Uhrzeit >= 46000))
我们可以将
base R
与[
lapply(data, function(x) x[x$Uhrzeit >= 46000,])
如果我们打算!
对子集使用匿名函数
lapply(data, subset, subset = Uhrzeit >= 46000)
或使用
data.table
library(data.table)
lapply(data, function(x) as.data.table(x)[Uhrzeit >= 46000])
library(data.table)
lapply(data, function(x) as.data.table(x)[Uhrzeit >= 46000])