как разбить двоичный столбец на два столбца - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь разбить двоичный столбец на два отдельных столбца, основываясь на 0,1

     account  
row1 0
row2 1
row3 0
row4 1
row5 0
row6 0

     account_0 | account_1 
row1 0         |  
row2           |  1
row3 0         |
row4           |  1
row5 0         |
row6 0         |

Попытка с использованием отдельной функции.Но он ожидает разделитель столбцов

test=separate(df, col = account, into = c("account_0","account
-1"), sep = ?) [not sure what to pass for the argument "sep"]

View(test)

Может кто-нибудь попробовать?

Ответы [ 2 ]

1 голос
/ 14 июня 2019
reshape(transform(df,time=account),dir="wide",idvar = "id")
    id account.0 account.1
1 row1         0        NA
2 row2        NA         1
3 row3         0        NA
4 row4        NA         1
5 row5         0        NA
6 row6         0        NA

read.csv(text = sub("(,1)",',\\1',do.call(paste,c(sep=',',df))),fill=T,h=F)
    V1 V2 V3
1 row1  0 NA
2 row2 NA  1
3 row3  0 NA
4 row4 NA  1
5 row5  0 NA
6 row6  0 NA
0 голосов
/ 14 июня 2019

Предполагая, что освобожденные ячейки являются пробелами, здесь 0 и 1 также будут символами. Может быть сделано с помощью dplyr. Вы можете использовать select, чтобы выбрать любые столбцы, которые вы хотите. TestData <- fread ("RowNumber account <br> row1 0 row2 1 row3 0 row4 1 row5 0 row6 0 ")

TestData %>% mutate(account_0  = ifelse(account == 0, "0"," ")) %>% mutate(account_1  = ifelse(account == 1, "1"," "))

   RowNumber account account_0 account_1
1:      row1       0         0          
2:      row2       1                   1
3:      row3       0         0          
4:      row4       1                   1
5:      row5       0         0          
6:      row6       0         0    
...