R 动态行加法

R 动态行加法,r,for-loop,datatable,sum,R,For Loop,Datatable,Sum,我有一个数据框,如下所示,我需要创建一个列和。对于每一行,总和将来自行动月份 Apr May Jun Jul Aug Sep Oct Nov Action On 4.0 2.0 3.0 2.0 1.5 1.0 0.5 4 July 3.0 4.0 1.0 7.0 2.0 3.0 1.0 2 August 3.0 3.0 1.0 0.5 0.5 1.0 1.0 6.0 September 1.0 1.0 0.5 0.3 0.3 0.5 0.5 2.0 October 0.5 1.0 0.4

我有一个数据框,如下所示,我需要创建一个列和。对于每一行,总和将来自行动月份

Apr May Jun Jul Aug Sep Oct Nov Action On
4.0 2.0 3.0 2.0 1.5 1.0 0.5 4   July
3.0 4.0 1.0 7.0 2.0 3.0 1.0 2   August
3.0 3.0 1.0 0.5 0.5 1.0 1.0 6.0 September
1.0 1.0 0.5 0.3 0.3 0.5 0.5 2.0 October
0.5 1.0 0.4 0.1 0.1 0.3 0.3 3.0 July
0.4 3.0 0.0 0.2 0.2 0.1 0.1 9.0 September
1.3 5.0 0.3 0.4 0.4 0.2 0.2 7.0 November
2.2 7.0 0.6 1.0 0.6 0.4 0.4 1.2 July
请让我知道最好的代码。我创建了一个将月份转换为数字的列,并使用for循环,如下所示:

for(rowidx in 1: nrow(conshead)) {
   startcol=conshead[rowidx,"b"]
   conshead[rowidx,"sum"]=sum(conshead[rowidx,startcol:8], na.rm = TRUE)
}
仍然存在这个错误

startcol:8:NA/NaN参数中出错


请分享一个更好的代码

这是你想要的吗

> m1 <- data.frame(Jul = c(1,4,6),
+                  Aug = c(3,5,9),
+                  ActionOn = c("July", "August", "July"))
> 
> m1
  Jul Aug ActionOn
1   1   3     July
2   4   5   August
3   6   9     July
> 
> m1$sumofinterest <- colSums(m1[,match(substr(m1$ActionOn, 1, 3), colnames(m1))])

> m1
  Jul Aug ActionOn sumofinterest
1   1   3     July            11
2   4   5   August            17
3   6   9     July            11
>m1
>m1
七月八月行动
7月1日至3日
8月2日至4日至5日
7月3日、6日和9日
> 
>m1$sumofinterest m1
7月至8月利息诉讼
2011年7月13日
2.4.5 8月17日
2011年7月3日、6日和9日

您也可以尝试
dplyr

library(tidyverse)

# reading your data
df <- read_table("Apr May Jun Jul Aug Sep Oct Nov Action On
4.0 2.0 3.0 2.0 1.5 1.0 0.5 4   July
3.0 4.0 1.0 7.0 2.0 3.0 1.0 2   August
3.0 3.0 1.0 0.5 0.5 1.0 1.0 6.0 September
1.0 1.0 0.5 0.3 0.3 0.5 0.5 2.0 October
0.5 1.0 0.4 0.1 0.1 0.3 0.3 3.0 July
0.4 3.0 0.0 0.2 0.2 0.1 0.1 9.0 September
1.3 5.0 0.3 0.4 0.4 0.2 0.2 7.0 November
2.2 7.0 0.6 1.0 0.6 0.4 0.4 1.2 July")
输出:

  # A tibble: 8 x 10
  #  Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   SUM `Action On`
  #  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>      
  # 1 4.00     2. 3.00  2.00  1.50  1.00  0.500  4.00 15.4  July       
  # 2 3.00     4. 1.00  7.00  2.00  3.00  1.00   2.00 26.0  August     
  # 3 3.00     3. 1.00  0.500 0.500 1.00  1.00   6.00  6.80 September  
  # 4 1.00     1. 0.500 0.300 0.300 0.500 0.500  2.00 11.5  October    
  # 5 0.500    1. 0.400 0.100 0.100 0.300 0.300  3.00  5.60 July       
  # 6 0.400    3. 0.    0.200 0.200 0.100 0.100  9.00  6.50 September  
  # 7 1.30     5. 0.300 0.400 0.400 0.200 0.200  7.00  4.00 November   
  # 8 2.20     7. 0.600 1.00  0.600 0.400 0.400  1.20 34.2  July     
# A tibble: 5 x 2
#   `Action On` SUM_per_month
#   <chr>               <dbl>
# 1 August              26.0 
# 2 July                55.2 
# 3 November             4.00
# 4 October             11.5 
# 5 September           13.3
输出:

  # A tibble: 8 x 10
  #  Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   SUM `Action On`
  #  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>      
  # 1 4.00     2. 3.00  2.00  1.50  1.00  0.500  4.00 15.4  July       
  # 2 3.00     4. 1.00  7.00  2.00  3.00  1.00   2.00 26.0  August     
  # 3 3.00     3. 1.00  0.500 0.500 1.00  1.00   6.00  6.80 September  
  # 4 1.00     1. 0.500 0.300 0.300 0.500 0.500  2.00 11.5  October    
  # 5 0.500    1. 0.400 0.100 0.100 0.300 0.300  3.00  5.60 July       
  # 6 0.400    3. 0.    0.200 0.200 0.100 0.100  9.00  6.50 September  
  # 7 1.30     5. 0.300 0.400 0.400 0.200 0.200  7.00  4.00 November   
  # 8 2.20     7. 0.600 1.00  0.600 0.400 0.400  1.20 34.2  July     
# A tibble: 5 x 2
#   `Action On` SUM_per_month
#   <chr>               <dbl>
# 1 August              26.0 
# 2 July                55.2 
# 3 November             4.00
# 4 October             11.5 
# 5 September           13.3
#一个tible:5 x 2
#'每月对'SUM'采取行动
#                  
#8月1日26.0
#7月2日55.2
#11月3日4时
#10月4日11.5
#9月5日13.3

related:您提供的数据中没有列
b
。最后,您可以将
dput(conhead)
的结果放入您的问题中。