У меня есть фрейм данных с этой структурой:Разбиение строки и укладки их в одном столбце
> df
modifications
13-MOD:0057
13-MOD:0046
13-MOD:0051,13-MOD:0076
13-MOD:0036,13-MOD:0076,13-MOD:0016
13-MOD:0256,13-MOD:0156,13-MOD:0956,13-MOD:0125
13-MOD:0014 13-MOD:0156, 13-MOD:0956,13-MOD:0125...n
13-MOD:0012 ... n
Чтобы расколоть данные я использовал этот код:
df2 <- data.frame(str_split_fixed(df$modifications, ",", 20))
В принципе, я получаю это данные.
> df2
x1 | x2 | x3 | empty |
13-MOD:0057 | empty | empty | empty |
13-MOD:0046 | emply | empty | empty |
13-MOD:0051 | 13-MOD:0076 | empty | empty |
13-MOD:0036 | 13-MOD:0076 | 13-MOD:0016 | empty |
13-MOD:0256 | 13-MOD:0156 | 13-MOD:0956 | 13-MOD:0125
13-MOD:0014 | 13-MOD:0156 | 13-MOD:0956 | 13-MOD:0125 | ... n
13-MOD:0012 | ... | ...n
Что я хочу удалить пустые значения и складывать данные из столбцов X2, X3, X4 ... п к первому X1.
Для этого я использую это:
df3 <- melt(setDT(df2), # set df to a data.table
measure.vars = list(c(1:20)), # set column groupings
value.name = 'V')[ # set output name scheme
, -1, with = F]
Чтобы удалить пустые значения:
df3[df3==""] <- NA
histo3 = подмножество (! DF3, V1 = 'NA')
Но Я не знаю, почему я получаю ошибку о длине столбца в функции расплава. Знаете ли вы, какой способ сделать это проще?
Возпроизводимо пример:
df <- data.frame(modifications=c("UNIMOD:108,UNIMOD:108","UNIMOD:108","UNIMOD:108","UNIMOD:108,UNIMOD:108,UNIMOD:108","UNIMOD:108,UNIMOD:108,UNIMOD:108,UNIMOD:108,UNIMOD:108,UNIMOD:108","UNIMOD:108"))
'read.table (текст = as.character (DF $ модификациями), заполняют = TRUE, то sep = ',') ' – rawr
@rawr'Error в read.table (text = as.character (histo1 $ изменения), fill = TRUE,: duplicate 'row.names' не разрешены – Enrique
Я не получаю эту ошибку, попробуйте добавить row.names = NULL? – rawr