Я пытаюсь выяснить, как генерировать отдельные значения из большого набора данных, чтобы я мог ввести значения в таблицу в R Markdown.
Например, мой исходный набор данных выглядит примерно так:
ID Occupation OnTime
1 1 A Y
2 2 B N
3 3 B N
4 4 A Y
5 5 D Y
6 6 C Y
7 7 C N
и мне бы хотелось такую таблицу, которая бы подсчитывала по профессии:
Occupation Total OnTime Percent
1 A 2 2 100
2 B 2 0 0
3 C 2 1 50
4 D 1 1 100
Столбец Total во втором фрейме данных суммирует номера каждого занятия, столбец OnTime подсчитывает числа в занятии A
, которые были Y
в OnTime
.
Поскольку я вручную создаю эту таблицу в уценке R, мне нужно создать каждое из значений по отдельности, чтобы ввести их в таблицу уценки R следующим образом:
Occupation | Total | OnTime | Percent
-----------|--------|---------|--------
A | TotalA | OnTimeA | PercentOnTimeA
B | TotalB | OnTimeB | PercentOnTimeB
C | TotalC | OnTimeC | PercentOnTimeC
D | TotalD | OnTimeD | PercentOnTimeD
Как мне сделать это эффективно, используя цикл?
До сих пор я придумал это:
for (i in unique(df$Occupation)) {
df2names <- paste("df1", i,sep=".")
assign(df2names, df1[df1$Occupation==i,])
}
Мне нужна дополнительная строка в приведенном выше коде, которая подсчитывает длину каждого из только что созданных фреймов данных, чтобы у меня были значения для ввода для TotalA, TotalB, TotalC и TotalD. Затем я использовал бы аналогичные циклы for для генерации столбцов OnTime и Percent в таблице Markdown.
Как бы я поступил так? Буду также признателен за другие подходы к этой проблеме. Спасибо!