Средство отображения (или # наблюдения) двумя переменными - PullRequest
0 голосов
/ 18 октября 2019

Я хотел бы показать статистику (для этого примера было бы очень полезно знать, как делать средние значения и количество наблюдений), по двум другим переменным, где одна переменная находится на одной стороне, а другая - на другойside.

Я не знаю, есть ли способ для R выяснить, как сделать так, чтобы метки значений, которые были бы в строке для этого примера, переставлялись для «оптимального» просмотра витоговая таблица, но это было бы идеально. Я имею в виду, что метки строковых значений могут быть очень длинными, чтобы в результирующей таблице все просто сдавливалось. Если на самом деле нет разумного способа, а просто разумного использования \ n, это тоже подойдет.

Пример ниже, где можно применить средства, вдоль group и type.

# Example data frame 
df <- data.frame(
  num <- c(0.225802, 0.384, 0.583, 0.868, 0.3859, 0.58582, 0.9485802, 0.085802),
  type <- c("This is a description of type 1", "This is a description of type 2", "This is a description of type 3", "This is a description of type 4", "This is a description of type 1", "This is a description of type 2", "This is a description of type 3", "This is a description of type 4"),
  group <- c("This is a really long description for group A", "This is a really long description for group A", "This is a really long description for group A", "This is a really long description for group A", "This is a really long description for group B", "This is a really long description for group B", "This is a really long description for group B", "This is a really long description for group B")
)
colnames(df) <- c("num", "type", "group")

Спасибо!

1 Ответ

1 голос
/ 18 октября 2019

Вы можете сделать следующее, используя data.table. В этом случае я создаю сводную таблицу, содержащую Средние и № Obs для num по Type / Group парам.

Код

require(data.table)
setDT(df)

untypes = df[, unique(as.character(type))] # Unique type descr
ungroups = df[, unique(as.character(group))] # Unique group descr

types = c(1,2,3,4) # Short types in the order they appear in `untypes` (1 to 4)
groups = c('A', 'B') # Short groups in the order they appear in `ungroups` (A to B)

df[, stype := sapply(type, function(x) types[which(untypes == x)])] # Assign short notation type ID
df[, sgroup := sapply(group, function(x) groups[which(ungroups == x)])] # Assign short notation group ID

dcast(df[, .(Mean = mean(num), No = length(num)), .(stype, sgroup)], stype ~ sgroup, value.var = c('Mean', 'No')) # Create summary matrix

Результат

   stype   Mean_A    Mean_B No_A No_B
1:     1 0.225802 0.3859000    1    1
2:     2 0.384000 0.5858200    1    1
3:     3 0.583000 0.9485802    1    1
4:     4 0.868000 0.0858020    1    1

Важно, чтобы types и groups были объявлены так, чтобы их порядки совпадали с соответствующими порядками untypes и ungroups соответственно,Например, если длинное описание типа 2 вводится как второе наблюдение в untypes, тогда types[2] должно равняться 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...