У меня есть фрейм данных, содержащий группы столбцов:
dataTab<-as.data.frame(matrix(data=NA, nrow=3, ncol=4))
names(dataTab)<-c("a1", "a2","b1","b2")
dataTab$a1<-c("d", "e", "f")
dataTab$a2<-c("d", "e", "g")
dataTab$b1<-c("h", "i", "j")
dataTab$b2<-c("i", "j", "k")
Я вручную строю таблицу агрегации, которая описывает, как я хочу агрегировать свой фрейм данных.Таблица содержит объединенные имена групп и индекс столбцов, связанных с каждой группой.
agTab<-as.data.frame(matrix(data=NA, nrow=2, ncol=2))
names(agTab)<-c("Grp_Name", "Index")
agTab$Grp_Name<-c("a", "b")
agTab$Index<-c("1:2","3:4")
Как я могу извлечь значения индекса из моей таблицы агрегирования, чтобы зациклить создание сводных таблиц по группам?
В моем первом методе я использую cat
, чтобы удалить кавычки вокруг индекса, так как он хранится как character
в аг.Таблица.Это неправильно индексирует:
for (row in 1:nrow(agTab)){
Ind<-cat(c(agTab[row,2]))
print(Ind)
sumTab<-as.data.frame(table(unlist(dataTab[,Ind])))
print(sumTab)}
Результат:
1:2NULL
[1] Freq
<0 rows> (or 0-length row.names)
3:4NULL
[1] Freq
<0 rows> (or 0-length row.names)
Я не уверен, что R видит в качестве значения индекса, но «NULL» определенно не прав.
Но, я получаю желаемый результат, когда вручную ввожу индекс:
sumTab<-as.data.frame(table(unlist(dataTab[,1:2])))
Var1 Freq
1 d 2
2 e 2
3 f 1
4 g 1
и,
sumTab<-as.data.frame(table(unlist(dataTab[,3:4])))
sumTab
Var1 Freq
1 h 1
2 i 2
3 j 2
4 k 1
Как я могу вытащить индекс изсводная таблица для использования при создании моей сводной таблицы?