99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2019-02-28 閱讀量: 1041
如何將行值拆分為列

我有一些看起來像這樣的數(shù)據(jù):

samp

# A tibble: 5 x 2

ID Source

<dbl> <chr>

1 34221 75

2 33861 75

3 59741 126,123

4 56561 111,105

5 55836 36,34,34,36,22

在任何不同的值中,我想創(chuàng)建一個新列。如果值存在于一行中,我想要歸一個“x”,否則不應該估算任何值。

預期結果的示例(偽代碼):

ID 75 126 123 111 105 36 34 22

1 34221 x

2 33861 x

3 59741 x x

4 56561 x x

5 55836 x x x

我通過包的separtate功能嘗試了它tydr。像這樣開始。

into = unique(unlist(strsplit(samp$Source, ",")))

samp %>% separate(col = "Source", into = into, sep = ",")

但是,這不起作用,因為如果一行中有多個值,則不會將值分配給相應的列(例如,對于ID 59741,值126在列75中而不在列126中)。

A tibble: 5 x 9

ID `75` `126` `123` `111` `105` `36` `34` `22`

<dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>

1 34221 75 NA NA NA NA NA NA NA

2 33861 75 NA NA NA NA NA NA NA

3 59741 126 123 NA NA NA NA NA NA

4 56561 111 105 NA NA NA NA NA NA

5 55836 36 34 34 36 22 NA NA NA

這是一個dput:

structure(list(ID = c(34221, 33861, 59741, 56561, 55836), Source = c("75",

"75", "126,123", "111,105", "36,34,34,36,22")), row.names = c(NA,

-5L), class = c("tbl_df", "tbl", "data.frame"))

解決辦法:該包裝splitstackshape對于這種操作非常方便,即

library(splitstackshape)

cSplit_e(df, "Source", mode = "binary", type = "character", fill = 0, drop = TRUE)

這使,

ID Source_105 Source_111 Source_123 Source_126 Source_22 Source_34 Source_36 Source_75

1 34221 0 0 0 0 0 0 0 1

2 33861 0 0 0 0 0 0 0 1

3 59741 0 0 1 1 0 0 0 0

4 56561 1 1 0 0 0 0 0 0

5 55836 0 0 0 0 1 1

28.5714
2
關注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子