R添加小计,直到下一个空白

R添加小计,直到下一个空白,r,R,我在csv文件中有如下数据: Id A B 1 1 2 1 1 3 1 4 1 1 5 1 6 1 1 7 1 我想把所有的加起来,直到下一个空格出现。不是所有的总和。只有“小计”,直到下一个空白。因此,在上述示例中,这将导致: A B 2 3 3 2 我在Excel中尝试过,但找不到解决方案。 谢谢 更新: 这是你给我的代码,并且(某种程度上)有效: 你可以试试这个(我填了一些NAs) dat使用na.strings=”“读取csv文件,以获取空字段所在的na值,

我在csv文件中有如下数据:

Id A B
1  1 
2  1 1
3    1
4  1 1
5  1 
6  1 1
7    1
我想把所有的加起来,直到下一个空格出现。不是所有的总和。只有“小计”,直到下一个空白。因此,在上述示例中,这将导致:

A B
2 3
3 2
我在Excel中尝试过,但找不到解决方案。 谢谢

更新:

这是你给我的代码,并且(某种程度上)有效:

你可以试试这个(我填了一些NAs)


dat使用
na.strings=”“
读取csv文件,以获取空字段所在的
na
值,并使用计算运行的
rle
定义函数
运行。最后,
sapply
在所需列上运行
,并转换到data.frame:

Lines <- '"Id","A","B"
"1",1,
"2",1,1
"3",,1
"4",1,1
"5",1,
"6",1,1
"7",,1'

DF <- read.csv(text = Lines, na.strings = "")

runs <- function(x) with(rle(x), lengths[!is.na(values)])
as.data.frame(sapply(DF[-1], runs))

如果A列和B列中连续1的序列数不同,会发生什么情况?问题不清楚,谢谢。非常有趣。似乎有效。但我想将其保存为可以打印的格式(或表格)。这可能吗。只是小计清单。我运行了你的代码,它给了我我想要的,然后打印(attr(,“na.action”),然后打印似乎每秒钟一个数字的东西,然后打印attr(,“class”)并总是“省略”。我只需要第一部分,直到我想(attr(,“na.action”)。@user413734你可以用
as.data.frame(…)将它强制到一个数据帧
您可以绘图,查看编辑出于某种原因,我总是会收到一个错误“数据中的错误。框架…参数意味着不同的行数:”)。这里的示例适用于您吗?
dput
您正在处理的数据框架,并将其添加到您的问题中。我将其粘贴为您要求的更新。我假设所有内容都是attr(,“na.action”)之前的内容是我想要的。至少看起来是这样。我想在一个包含2000多行和53个变量的csv中读取。我如何导入它,使其与您的代码一起工作?DF
DF相同错误:data.frame中的错误(X1=c(2L、3L、8L、2L、5L、13L、4L、25L、2L、24L,:参数表示行数不同:显示的代码是自包含的,不会产生任何错误。从答案中复制它并将其粘贴到R会话中。如果出现错误,则与显示的代码不同。
$X1
  [1]  2  3  8  2  5 13  4 25  2 24  5  9  8  2 20 24  5  3  1 16 10 15  2 15  3 15  1
 [28] 10  3  1 12  4 11  6  3  1 23 24  5  6  5  1  1  7 12  3  8  4  7  2  6  4  4  1
 [55]  1  1 24  5  3  2  4  9  3  5 22  1  3 10  6  1 14  3  6  6  8  3 13  2  7  3  2
 [82] 16 16  2  3  2 12  2  9 23  3  9  7  8  2  6  3 23 10  4 13  3  2  5  1  1  7 10
[109]  8  5  4  3  4  5  5  1  4 10  1 16 39  9  1  1  9  3  2 13  5  9  7  9  6  1  3
[136]  1  4 44 21  2 12  1 59  4  2  7  1  8  3 12 10 10  8 18  5  1  1 13 11  2  1 18
[163] 12 11  5  1  2  8  8  7  5  6  2  5 19  2 21  3  1 18  1  2  9 12 11  3  8  2  5
[190] 11  2  5 20  4 16  7 11  2 14 14 15  2  2  6 12  5 13  3  4  2  2  3  8 11 11 14
[217]  2  4  2  3  9  5  6  6  4 10  5  2  9 18 17  5  4  3  6  9 23  3 12  3  5  1 19
[244]  4  4 13 26  3  9 17  3  3  1  1  4 17 14  8  2  7  6  5 37  6  1  5  9 13  1  5
[271]  2 22
attr(,"na.action")
  [1]   1   3   5   7   9  11  13  15  17  18  20  22  24  26  28  30  32  34  36  38
 [21]  40  42  44  46  48  50  52  53  55  57  59  61  63  65  67  69  71  73  74  76
 [41]  78  80  82  83  85  87  89  91  93  95  97  99 101 103 105 107 108 110 112 113
 [61] 115 117 119 121 123 125 127 129 130 132 134 136 138 140 142 144 145 147 149 151
 [81] 152 154 156 158 160 162 164 166 168 170 172 174 176 178 180 182 184 186 188 190
[101] 192 194 196 198 200 202 203 205 207 209 211 213 215 217 219 221 223 225 227 229
[121] 230 232 234 236 238 240 242 244 246 248 250 252 254 256 258 260 261 263 265 267
[141] 269 271 273 274 275 277 279 281 283 284 286 288 290 292 293 295 297 299 301 303
[161] 305 307 309 311 313 315 317 319 321 323 325 327 329 331 333 334 336 338 340 342
[181] 344 346 348 349 351 353 355 357 359 361 363 365 367 368 370 372 374 376 378 380
[201] 382 384 386 388 390 392 394 396 398 400 402 403 405 407 409 411 412 414 416 418
[221] 420 422 424 426 428 430 431 433 434 436 438 440 442 444 446 448 450 452 454 456
[241] 458 459 461 463 465 467 469 471 473 475 477 479 481 483 485 487 489 491 493 495
[261] 497 499 501 503 505 507 509 511 512 514 516 518 520 522 524 526 527 529 531 532
[281] 534 536 537 539 541 543 545 547 549 551 553 555 556 558 560 562 564 566 568 570
[301] 572 574
attr(,"class")
[1] "omit"
dat <- read.table(header = TRUE, text="Id A B
1  1 NA
2  1 1
3  NA  1
4  1 1
5  1 NA
6  1 1
7  NA  1")

sapply(dat[, -1], function(x) na.omit(with(rle(x), lengths * values)))
#      A B
# [1,] 2 3
# [2,] 3 2
 d <- as.data.frame(sapply(dat[, -1], function(x) na.omit(with(rle(x), lengths * values))))

str(d)
plot(d)
Lines <- '"Id","A","B"
"1",1,
"2",1,1
"3",,1
"4",1,1
"5",1,
"6",1,1
"7",,1'

DF <- read.csv(text = Lines, na.strings = "")

runs <- function(x) with(rle(x), lengths[!is.na(values)])
as.data.frame(sapply(DF[-1], runs))
  A B
1 2 3
2 3 2