Вычисление пропорций с использованием lapply () - PullRequest
0 голосов
/ 15 октября 2019

У меня есть фрейм данных с множеством столбцов с тегами слов, например:

tags <- c("NN0", "VVZ", "CJS")

df <- data.frame(
  tag1 = c(sample(tags, 10, replace = T)), 
  tag2 = c(sample(tags, 10, replace = T)),
  tag3 = c(sample(tags, 10, replace = T)),
  tag4 = c(sample(tags, 10, replace = T))
)
df
   tag1 tag2 tag3 tag4
1   CJS  NN0  VVZ  CJS
2   VVZ  NN0  NN0  VVZ
3   NN0  NN0  NN0  NN0
4   CJS  NN0  VVZ  VVZ
5   CJS  NN0  NN0  CJS
6   VVZ  CJS  CJS  CJS
7   CJS  NN0  VVZ  NN0
8   VVZ  VVZ  VVZ  NN0
9   NN0  NN0  NN0  NN0
10  VVZ  VVZ  VVZ  NN0

Что я хотел бы сделать, это вычислить пропорции тегов на столбец. Использование вложений lapply() и table() внутри prop.table() дает мне нужные пропорции, но при этом также сохраняются исходные столбцы с тегами (см. Столбцы 1,3,5,7):

prop <- as.data.frame(lapply(df, 
                              function(x) 
                                prop.table(table(x))*100))
prop
  tag1.x tag1.Freq tag2.x tag2.Freq tag3.x tag3.Freq tag4.x tag4.Freq
1    CJS        40    CJS        10    CJS        10    CJS        30
2    NN0        20    NN0        70    NN0        40    NN0        50
3    VVZ        40    VVZ        20    VVZ        50    VVZ        20

Как я могу настроить код так, чтобы результат был просто пропорции?

...