Как эффективно обрабатывать большой массив данных построчно? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть большой фрейм данных (более 10 000 000 строк), который я хотел бы обработать. Я также довольно плохо знаком с R и хочу лучше понять, как работать с такими большими наборами данных.

У меня есть формула, которую я хочу применить к каждой строке в фрейме данных. Но из опыта я обнаружил, что «для циклов» и «применять» не очень хорошо работают с действительно большими наборами данных. Я пытался обернуть голову вокруг Split-Apply-Combine, но я не совсем понимаю, как его использовать, когда я хочу применить функцию построчно.

Вот пример dataframe это имеет 1 000 000 строк. Я хотел бы применить функцию, которая берет каждую строку и выполняет простое умножение на два столбца, чтобы получить вывод (я понимаю, что мог бы сделать это намного проще, но я хочу попрактиковаться в Split-Apply-Combine).

#make a dataframe
df <- data.frame("a"=c(rep("group1",times=500000),rep("group2",times=500000)),
                 "b"=c(1:1000000),"c"=c(1000001:2000000))

Что я хочу сделать: для каждой строки я хочу взять значение в столбце "b" и умножить его на значение в столбце "c"

1 Ответ

0 голосов
/ 13 февраля 2020

Вам не нужно использовать применить или другие функции. Для небольшого примера:

df <- data.frame("a"=c(rep("group1",times=5),rep("group2",times=5)),
                 "b"=c(1:10),"c"=c(11:20))
df
       a  b  c
1  group1  1 11
2  group1  2 12
3  group1  3 13
4  group1  4 14
5  group1  5 15
6  group2  6 16
7  group2  7 17
8  group2  8 18
9  group2  9 19
10 group2 10 20

Я могу просто сделать это:

df$d = df$b *df$c #create a new column called d
df
       a  b  c   d
1  group1  1 11  11
2  group1  2 12  24
3  group1  3 13  39
4  group1  4 14  56
5  group1  5 15  75
6  group2  6 16  96
7  group2  7 17 119
8  group2  8 18 144
9  group2  9 19 171
10 group2 10 20 200
...