r - 计算行中多个值的总和
问题描述
嗨,我有如下 ai/p 数据框
df = data.frame('value' = c("(1_00),(0_04),(1_08),(0_12),(1_14)","(1_15),(0_22),(1_29)",
"(0_30),(1_38),(0_40),(1_44)","(0_45),(1_57),(0_59)",
"(0_15),(1_21),(0_26),(0_29)"),stringsAsFactors = F)
从上面的数据框中,我无法找出来自“sample_calc”列的“output”列“sample_calc”的计算如下
for row:1- i.e `(1_00),(0_04),(1_08),(0_12),(1_14)` calculated as second set
of character in second block after "_" (04) minus second set (00) in the first
block multply by first set in first block (i.e: (4-0)*1 )
similarly from 3rd block to 2nd block .finally we need need to add all blocks.`(4-0)*1 + (8-4)*0 +(12-8)*1 + (14-12)*0`
o/p df1
df1 = data.frame('value' = c("(1_00),(0_04),(1_08),(0_12),(1_14)",
"(1_15),(0_22),(1_29)",
"(0_30),(1_38),(0_40),(1_44)",
"(0_45),(1_57),(0_59)","(1_00),(0_07),(1_14)",
"(0_15),(1_21),(0_26),(0_29)"),
"sample_calc"=c("(4-0)*1 + (8-4)*0 +(12-8)*1 + (14-12)*0",
"(22-15)*1 + (29-22)*0",
"(38-30)*0 + (40-38)*1 + (44-40)*0",
"(57-45)*0 + (59-57)*1",
"(7-0)*1 + (14-7)*0",
"(21-15)*0 + (26-21)*1 + (29-26)*0"),
"output"=c(8,7,2,2,7,5),stringsAsFactors = F)
解决方案
首先,我将使用以下代码将字符串转换为数字字符串:
foo <- lapply(strsplit(gsub("\\(|\\)", "", df$value), ","),
function(x) as.numeric(unlist(strsplit(x, "_"))))
foo
包含相同的信息,但数量:
foo[1:2]
[[1]]
[1] 1 0 0 4 1 8 0 12 1 14
[[2]]
[1] 1 15 0 22 1 29
接下来,我们只需将您的计算应用于(我们得到“第二组”中元素的foo
“ID”( )并应用所需的逻辑:)y
sum((x[y] - x[y - 2]) * x[y - 3])
sapply(foo, function(x) {y <- seq(4, length(x), 2);
sum((x[y] - x[y - 2]) * x[y - 3])})
[1] 8 7 2 2 7 5
推荐阅读
- java - 它不会给我代码错误,MySQLSyntaxErrorException
- visual-studio-code - VSCode Minimap 不工作,是我的机器太旧了吗?
- python - 如何将html标签添加到字符串,避免嵌套标签
- python - 为什么数据框的内容会影响设置?
- apache-kafka - 如何使用 Kafka 连接输出到 GCS 中的动态目录?
- python - 如何在 Python 中使用 drawContours OpenCV 方法?
- python-3.x - 如何对numpy数组中除第一列之外的所有列进行切片?
- scala - 未找到函数的隐式
- html - ReactJs - onClick 似乎不适用于按钮 HTML 标签
- java - Flyway 找不到类路径:db/migrations