r - 如何在R中检测和组合向量中的元素?
问题描述
我有一个包含许多元素的数据列表,其中我只需要列“interval..s”(回合持续时间)和“ActivityCode”(0 到 5),参见图片(datalist)。我尝试从“interval..s”列中提取“ActivityCode”列中的所有 0 和 5 以及它们的相应值。
我已经编写了一个代码来提取具有活动代码 0 和 5 的回合持续时间(从列'interval..s'),但是当 0 和 5 是两个连续回合时,回合持续时间应该相加
setwd("/Users/lucp9693/Desktop/csvfolder")
mydir = "csvfolder"
myfiles = list.files(path = mydir, pattern = ".csv",full.names = TRUE)
setwd("/Users/lucp9693/Desktop/csvfolder")
list.files(pattern = ".csv$")
list.filenames = list.files(pattern = ".csv$")
list.data = list()
ind = 0
result = vector("numeric",length(list.filenames))
for(i in 1:length(list.filenames))
{
ind = ind +1
list.data[[i]] = read.csv(list.filenames[i])
document = read.csv(list.filenames[i],header = TRUE, sep = ",")
W = document$Interval..s.[bestand$ActivityCode..0.sedentary.1.standing.2.stepping.2.1.cycling.3.1.primary.lying..3.2.secondary.lying.4.non.wear.5.travelling.==0]
有没有可能做到这一点?谢谢!
解决方案
这是我对您的问题的阅读(带有一些示例数据):
library(dplyr)
library(tidyr)
library(tibble)
data <- tibble(
Interval = round(runif(n = 100, min = 1, max = 1000), 1),
ActivityCode = round(runif(n = 100, min = 0, max = 5),0)
)
data <- data %>%
filter(ActivityCode == 0 | ActivityCode == 5) %>%
mutate(sum = ifelse(ActivityCode == lag(ActivityCode, 1),Interval + lag(Interval, 1), Interval))
我删除了除 ActivityCode 为 0 和 5 的行之外的所有行。如果相邻或连续出现 0 或 5,则将两个相邻的间隔相加。有了这个输出:
> print.data.frame(data)
Interval ActivityCode sum
1 87.1 0 NA
2 38.7 0 125.8
3 843.1 5 843.1
4 680.6 5 1523.7
5 151.3 5 831.9
6 37.8 0 37.8
7 539.6 0 577.4
8 978.6 5 978.6
9 140.0 5 1118.6
10 145.1 5 285.1
11 252.5 0 252.5
12 90.0 0 342.5
13 588.8 5 588.8
14 459.1 0 459.1
这就是你所追求的吗?
推荐阅读
- javascript - 为什么 input[text] 的 value 属性与浏览器呈现的不同?
- php - set_include_path 不完全工作
- java - 搜索连接到我的远程服务器的安全方式
- c# - 如何在从 Asp.Net Core 2.1 MVC Web 控制器发送的客户端上显示 SignalR 消息?
- visual-studio - 恢复表格模型项目/模型
- amazon-web-services - 单个 Docker 映像从 VSTS 构建/发布定义推送到 AWS 弹性容器注册表 (ECR)
- python - HTTPServer.run 需要一个 BaseHTTPRequestHandler 类而不是一个对象
- sql-server - SQL-“用户登录失败”但找不到该用户
- java - MediaCodec 编码 - dequeueInputBuffer 返回 INFO_TRY_AGAIN_LATER?
- tensorflow - LSTM - 不平衡数据集 - 低召回率