在r中没有循环的情况下,有任何方法可以对这些数据进行求和吗?第一排没有安娜,也没有空白。这是一个顺序数据的列表。
在此之前:
Column 1 Column 2
FLOWING
DOWNTIME 1,922
FLOWING 23
FLOWING 8
FLOWING 23
FLOWING 26
DOWNTIME 36
FLOWING 1
FLOWING 8
DOWNTIME 12
FLOWING 0
FLOWING 3
FLOWING 13
DOWNTIME 2
FLOWING 10
FLOWING 12
FLOWING 30
DOWNTIME 24
DOWNTIME 1之后:
Column 1 Column 2
FLOWING
DOWNTIME 1,922
FLOWING 80
DOWNTIME 36
FLOWING 9
DOWNTIME 12
FLOWING 16
DOWNTIME 2
FLOWING 52
DOWNTIME 25发布于 2018-10-05 03:19:39
“Column2”中有,,这将使其成为character类。因此,我们移除,,将其转换为numeric,并在按“Column1”的游程-id (rleid从data.table)进行分组后获得sum。
library(dplyr)
library(data.table)
df1 %>%
mutate(Column2 = as.numeric(str_remove(Column2, ","))) %>%
group_by(grp = rleid(Column1)) %>%
summarise(Column1 = first(Column1),
Column2 = sum(Column2)) %>%
ungroup %>%
select(-grp)或者使用data.table方法
setDT(df1)[, .(Column1 = first(Column1),
Column2 = sum(as.numeric(sub(",", "", Column2)))), .(grp = rleid(Column1))]数据
df1 <- structure(list(Column1 = c("FLOWING", "DOWNTIME", "FLOWING",
"FLOWING", "FLOWING", "FLOWING", "DOWNTIME", "FLOWING", "FLOWING",
"DOWNTIME", "FLOWING", "FLOWING", "FLOWING", "DOWNTIME", "FLOWING",
"FLOWING", "FLOWING", "DOWNTIME", "DOWNTIME"), Column2 = c("",
"1,922", "23", "8", "23", "26", "36", "1", "8", "12", "0", "3",
"13", "2", "10", "12", "30", "24", "1")), class = "data.frame",
row.names = c(NA, -19L))https://stackoverflow.com/questions/52657888
复制相似问题