【发布时间】:2017-05-12 13:36:28
【问题描述】:
我有一个看起来像这样的数据框。名称和列数将不一致(有时不存在“C”,有时可能存在“D”、“E”、“F”等)
# name and number of columns varies...so need flexible process
A <- c(1, 2, 1, 2, 3, 2, 1, 1, 1, 2, 1, 4, 3, 1, 2, 2, 1, 2, 4, 8)
B <- c(5, 6, 6, 5, 3, 7, 2, 1, 1, 2, 7, 4, 7, 8, 5, 7, 6, 6, 4, 7)
C <- c(9, 1, 2, 2, 1, 4, 5, 6, 7, 8, 89, 9, 7, 6, 5, 6, 8, 9 , 67, 6)
ABC <- data.frame(A, B, C)
我想遍历每个变量并收集各种信息。这是一个简单的例子,但我所做的会更复杂。我这么说是为了让别人不只是推荐某种 summary() 类型的解决方案。
maximum_value <- max(A)
mean_value <- mean(A)
# lots of other calculations for A
ID = 'A'
tempA <- data.frame(ID, maximum_value, mean_value)
maximum_value <- max(B)
mean_value <- mean(B)
# lots of other calculations for B
ID = 'B'
tempB <- data.frame(ID, maximum_value, mean_value)
maximum_value <- max(C)
mean_value <- mean(C)
# lots of other calculations for C
ID = 'C'
tempC <- data.frame(ID, maximum_value, mean_value)
output <- rbind(tempA, tempB, tempC)
这是我尝试创建一个循环以逐个遍历变量并汇总输出。我不知道如何让 [i] 指向数据框 ABC 的单个列。
# initialize data frame
data__ <- data.frame(ID__ = as.character(),
max__ = as.numeric(),
mean__ = as.numeric())
# loop through A, then B, then C
for(i in A:C) {
ID__ <- '[i]'
max__ <- maximum[i]
mean__ <- mean[i]
data__temp <- (ID__, max__, mean__)
data__ <- rbind(data__, data__temp)
}
如果我在 SAS 中执行此操作,我将在 proc sql 中使用 select into 创建变量名称列表,然后编写一个数组,然后我可以这样循环它们,但是我缺少一些东西在这里。
我将如何告诉 R 为数据框中的每个变量执行此过程?
【问题讨论】: