Как извлечь элемент из уровня фактора, если один уровень имеет несколько элементов в т - PullRequest
1 голос
/ 04 июня 2019
У меня есть столбец в моем фрейме данных - FD, который является фактором с 6 уровнями, как показано ниже

Уровни: [1, 4, 5] [1,5] [1] [2, 4] [2] [3, 5]

но каждый уровень содержит более одного элемента. Итак, как извлечь / получить доступ к элементам / элементам и индивидуальному уровню

sample<-read.csv(file.choose(), header=T)
df<-as.data.frame(sample)
df

v<-df$Nodes[]

w<-df$FirstDegree[]
for (i in v) {
  t<-c(1:5)
  if (df$FirstDegree[t][2]==i){
    print(1)
    }
  else {
    print(0)
    }
  }

Мне нужно создать матрицу с 1 и 0, где 1 представляет, присутствует ли значение выбранного узла в FirstDegree, иначе ноль. За что я пытаюсь получить доступ к предметам внутри уровня

1 Ответ

0 голосов
/ 04 июня 2019

Я бы преобразовал фактор в символьный объект и после этого проверил бы, присутствует ли в строке степень от 1 до 5.

Предполагая, что это ваши данные

FirstDegree <- factor(c("[1, 4, 5]", "[1,5]", "[1]", "[2, 4]", "[2]", "[3, 5]"))
FirstDegree
Levels: [1, 4, 5] [1,5] [1] [2, 4] [2] [3, 5]

Я бы сделал

FirstDegree <- as.character(FirstDegree)

# sapply runs the code below for every possible degree 1 to 5
m <- sapply(1:5, function(degreenumber){
# we convert the number 1 to 5 to a character and see if this number
# is present in the vector FirstDegree. grepl returns TRUE or FALSE but since
# you asked for 1 or 0 we use as.numeric
as.numeric(grepl(as.character(degreenumber), FirstDegree))})
# the resulting matrix looks like this:
m
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    0    1    1
[2,]    1    0    0    0    1
[3,]    1    0    0    0    0
[4,]    0    1    0    1    0
[5,]    0    1    0    0    0
[6,]    0    0    1    0    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...