从另一个向量创建表列

时间:2017-06-30 14:52:09

标签: r vector

有人可以提供有关从R?

中的另一个向量创建新表列的建议

我有一张名为" main"测试类型和测试次数。我想创建一个新列来分配测试值。

Test Type    Number of Tests    Test Value
    a               1               
    b               4   
    c               3
    d               2

测试值以另一个向量x < - (0.1,0.2,0.2,0.3,0.2,0.6,0.5,0.6,1.2,1.3)的顺序存储。向量中的测试值总数等于执行的测试总数。

相应测试类型的测试值等于多个测试的值的平均值。例如,测试类型为0.1,测试b类型为(0.2 + 0.2 + 0.3 + 0.2)/ 4,测试c类型为(0.6 + 0.5 + 0.6)/ 3,测试d类型为(1.2 + 1.3)/ 2

以下是我的代码:

idx_low <- 1
number_vector <- numeric()
for (value in main[[2]]) {
    idx_high <- idx_low+value-1
    number <- mean(x[idx_low:idx_high])
    number_vector <- c(number_vector, number)
    idx_low <- idx_high+1
}
main[[3]] <- number_vector  

1 个答案:

答案 0 :(得分:0)

这个怎么样:

library("dplyr")
main = data.frame(test_type = letters[1:4],
                  num_tests = c(1,4,3,2),
                  stringsAsFactors = FALSE)
test_scores = c(0.1, 0.2, 0.2, 0.3, 0.2, 0.6, 0.5, 0.6, 1.2, 1.3)
labels = c()
for(i in 1:nrow(main)){
  labels = c(labels, rep(x = main$test_type[i], times = main$num_tests[i] ))
}

test_scores = data.frame(scores = test_scores,
                         test_type = labels) %>% 
  group_by(test_type) %>% 
  summarise(avg_score = mean(scores)) %>% 
  right_join(main)