2016-12-18 2 views
0

У меня есть CSV файл со следующей структурой:несколько записей одного Клеточные

Age Sex Ailments 
73  F Diabetes; Mobility; Hypertension 
70  M Hypertension; Memory problems; 
68  M Hypertension; Diabetes 

В столбце «недомогания» имеет несколько элементов, разделенных символом «;».

Несколько записей в «Ailments» имеют два варианта. Либо они являются плоским списком, и в этом случае все записи имеют равный приоритет; или они являются списком приоритетов, в которых я хотел бы использовать несколько таблиц, как показано ниже для первичных, вторичных, третичных и т. д. записей.

Ailment  Male  Female 
Diabetes  65.4%  71.45% 
Hypertension 75.23% 68.23% 
Memory   19.23% 24.34% 

Любая помощь очень ценится.

s1b.

ответ

0

Мы можем сделать это

library(splitstackshape) 
dcast(cSplit(df1, "Ailments", ";", "long"), Ailments~Sex, value.var="Age", 
     sum)[, (2:3) := lapply(.SD, function(x) round(100*x/sum(x), 2)), .SDcols = 2:3][] 
+0

Спасибо очень много! – user1994911

+0

@ user1994911 Благодарим вас за комментарии. Вы также можете проверить [здесь] (http://stackoverflow.com/help/someone-answers) – akrun

Смежные вопросы