Р: Как мне создать весовые коэффициенты для моей сети на основе частоты? - PullRequest
0 голосов
/ 10 июня 2018

У меня есть список краев (2 столбца), и я хочу создать 3-й столбец с весами для каждого узла на основе количества упоминаний каждого слова в моих данных.

См. Прикрепленные мои данные.

Например: «нефть», «плохой», «газ» появляются несколько раз, и я хотел бы добавлять значение «1» для каждого появления одного и того же (и удалять несколько строк).

Даты

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Я не хочу вводить ваши данные, поэтому проиллюстрирую их некоторыми сгенерированными данными.

set.seed(1234)
x = sample(LETTERS[1:6], 20, replace=TRUE)
y = sample(letters[1:6], 20, replace=TRUE)
dat = data.frame(x,y)

Вы можете получить желаемый счетчик с помощью функции count в пакете plyr.

library(plyr)
count(dat)
   x y freq
1  A b    1
2  A d    1
3  B b    4
4  B e    1
5  B f    2
6  D a    3
7  D b    2
8  D e    2
9  E c    1
10 F b    1
11 F d    1
12 F e    1
0 голосов
/ 10 июня 2018

Простое решение для этого случая будет просто использовать table

#create some sample data
set.seed(1)
node1<-rep("oil drilling", 20)
node2<-sample(c("gas", "frack", "pollute", "good"),20,replace=T)

edglst<-data.frame(node1, node2)              

head(edglist,10)

          node1   node2
1  oil drilling   frack
2  oil drilling   frack
3  oil drilling pollute
4  oil drilling    good
5  oil drilling     gas
6  oil drilling    good
7  oil drilling    good
8  oil drilling pollute
9  oil drilling pollute
10 oil drilling     gas

#use table to get a dataframe with one row per combination and its frequency
as.data.frame(table(edglst))

    node1   node2 Freq
1 oil drilling   frack    5
2 oil drilling     gas    4
3 oil drilling    good    6
4 oil drilling pollute    5

РЕДАКТИРОВАТЬ : Вам также может понадобиться удалить некоторые 0, если у вас есть несколько возможных комбинаций узловкоторые не встречаются в ваших данных, в этом случае

x<-as.data.frame(table(edglst))
x<-x[!x$Freq==0,]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...