У меня есть фрейм данных:
df <- data.frame (ID = c(1:20),
Ethnicity = c(rep(c("White", "Asian", "Black", "Hispanic", "Other"), times=20/5)),
Age = c(1:20),
Set = rep(c(1,2,3,4), times=20/4)
)
Я хочу знать разбивку ethnicity и age по Set. Обычно я использую table(df$ethnicity), но как это сделать с помощью Set?
Желаемый результат для этнической принадлежности — это таблица с процентным соотношением каждого ethnicity к Set. Например, в этом случае во всех наборах будет 20 % белых, 20 % азиатов, 20 % черных, 20 % латиноамериканцев, 20 % других. Что касается возраста, он выведет средний возраст каждого набора в таблице.
Благодарю вас!
@MrFlick спасибо за комментарий, только что отредактировал вопрос для большей ясности!





Вы можете использовать prop.table:
prop.table(table(df$Ethnicity, df$Set), 2)
1 2 3 4
Asian 0.2 0.2 0.2 0.2
Black 0.2 0.2 0.2 0.2
Hispanic 0.2 0.2 0.2 0.2
Other 0.2 0.2 0.2 0.2
White 0.2 0.2 0.2 0.2
Для числовой категории x вы можете использовать by:
by(df$Age, df$Ethnicity, mean)
df$Ethnicity: Asian
[1] 9.5
-------------------------------------------------------------
df$Ethnicity: Black
[1] 10.5
-------------------------------------------------------------
df$Ethnicity: Hispanic
[1] 11.5
-------------------------------------------------------------
df$Ethnicity: Other
[1] 12.5
-------------------------------------------------------------
df$Ethnicity: White
[1] 8.5
Вы имеете в виду
with(df, table(Age, Set))илиtable(df$Age, df$Set)? Или какой именно желаемый результат для этого примера ввода?