Как вычислить числа из массива в ячейке - PullRequest
0 голосов
/ 13 июля 2020

В одном из столбцов моего df значения в ячейке сообщаются как массив (например, [1,2,3,4,8]), а не как отдельные числа. Это потому, что вопрос был вопросом «выберите все подходящие».

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

Например:

row 1: [1,2,3,4,8]
row 2: [3]
row 3: [1,2,3,4]

Я хочу иметь возможность запускать такой оператор, как: nrow(df[df$column == 1,]), который будет посчитайте все вхождения числа 1. Итак, в этом случае вывод будет 2, но сейчас он говорит 0.

1 Ответ

0 голосов
/ 26 июля 2020

Вот метод с использованием базы R:

# set up data
df <- as.data.frame(c('[1,2,3,4,8]', '[3]', '[1,2,3,4]'))
colnames(df) <- c('data')

# strip off starting and ending brackets
stripped <- substr(df$data, 2, nchar(df$data)-1)

# split each row by comma
split <-  strsplit(stripped, ',')

# flatten the list of numbers to a vector
numbers <- unlist(split)

# view table of frequency of each number
table(numbers)

вывод:

numbers
1 2 3 4 8 
2 2 3 2 1 

получение количества одного числа

# view count of a single number
length(which(numbers == '8'))

вывод:

[1] 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...