2015-02-06 2 views
0

Я знаю, как это сделать вручную. Но я хотел бы сделать это разумным способом. Я очень смущен, как использовать функции apply.Как я могу работать с конкретным столбцом?

Все, что я хочу сделать, это суммировать значения столбца частоты и делить каждое число на эту сумму. Кроме того, я должен сделать это для большого количества кадров данных.

class Frequency 
A 1 
B 1 
C 1 
D 1 
E 1 
F 1 
G 1 
H 1 
I 1 
J 1 

Ожидаемые результаты, так как Sum = 10.

class Frequency 
A .1 
B .1 
C .1 
D .1 
E .1 
F .1 
G .1 
H .1 
I .1 
J .1 

Кроме того, у меня есть 10 таких dataframes, скажем df1, df2, ...., DF10.

+1

Хранятся ваши data.frames в списке? (Если нет, они, вероятно, должны быть.) – MrFlick

+0

Вы имеете в виду вот это? mydata <- list (df1, df2, ..., df10). Я могу это сделать. – maximusdooku

+0

И проверить 'mget' для этой цели –

ответ

2

с кадрами данных выборки в списке, как этот

mydata<-replicate(2, data.frame(
    class=letters[1:5], 
    Frequency=rpois(5, 4)), 
simplify=FALSE) 

Вы можете использовать lapply перебрать список data.frames

lapply(mydata, function(x) transform(x, Frequency=Frequency/sum(Frequency))) 
+0

Спасибо. У меня общий вопрос. Когда я храню это в x, мои исходные фреймы данных больше не обновляются, но теперь у меня есть новый список x, где я могу получить доступ к кадрам через x [1], x [2] и т. Д. Так что теперь, если я нужно добавить еще одну операцию, я получаю x [1] $ frequency? Является ли это предлагаемым способом сделать это вместо работы с десятками отдельных фреймов данных? Кажется, я работаю очень грубо. – maximusdooku

+0

Да. Если данные несколько взаимосвязаны, жизнь намного проще, если вы храните data.frames в списке, а не кучу отдельных переменных. Часто такие операции, как импорт данных в список, можно легко разложить на факторизованные. – MrFlick

+0

Также, если я хочу, чтобы мои исходные данные были обновлены отдельно, а не внутри списка? Извините, если я задаю основные вопросы. Как мне это изменить? – maximusdooku

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