我想看看如何將單個資料框列拆分為兩列并將一個符號替換為另一個。例如,如果資料框 y 有;
| X1 |
|---|
| 不適用 |
| 1/0:0.82 |
| 1/1:1.995 |
| 0/1:1.146 |
| 不適用 |
| 1/1:1.995 |
我希望能夠像這樣將資料分成兩列,并將“/”符號替換為“.”。
| X1 | X2 |
|---|---|
| 不適用 | |
| 1.0 | 0.82 |
| 1.1 | 1.995 |
| 0.1 | 1.146 |
| 不適用 | |
| 1.1 | 1.995 |
每當我嘗試使用 str.split 時,我都會遇到錯誤。任何幫助都會很棒。
編輯:
X1
不適用
1|0:0.82
1|1:1.995
0|1:1.146
不適用
1|1:1.995
如何將其分開,使其|X1|X2| |--|--| |不適用| |1/0|0.82| 等等
uj5u.com熱心網友回復:
read.table(text=df$X1, sep=':', fill=T, h=F, dec = '/')
V1 V2
1 NA
2 1.0 0.82
3 1.1 1.995
4 0.1 1.146
5 NA
6 1.1 1.995
如果你想在各自的 data.types 列:
type.convert(read.table(text=df$X1, sep=':', fill=T, h=F, dec = '/'), as.is = TRUE)
V1 V2
1 NA NA
2 1.0 0.820
3 1.1 1.995
4 0.1 1.146
5 NA NA
6 1.1 1.995
df <- structure(list(X1 = c(NA, "1/0:0.82", "1/1:1.995", "0/1:1.146", NA,
"1/1:1.995")), class = "data.frame", row.names = c(NA, -6L))
uj5u.com熱心網友回復:
您可以使用separate將資料拆分:為兩列并替換/為.第一列。使用來自@Onyambu 的資料 -
library(dplyr)
library(tidyr)
df <- df %>%
separate(X1, c('X1', 'X2'), sep = ':') %>%
mutate(X1 = sub('/', '.', X1)) %>%
type.convert(as.is = TRUE)
df
# X1 X2
#1 NA NA
#2 1.0 0.820
#3 1.1 1.995
#4 0.1 1.146
#5 NA NA
#6 1.1 1.995
uj5u.com熱心網友回復:
使用 strsplit
d$d
[1] NA "1/0:0.82" "1/1:1.995" "0/1:1.146" NA "1/1:1.995"
data.frame( unname( t(data.frame( strsplit(sub("/",".",d$d), ":") )) ) )
X1 X2
1 <NA> <NA>
2 1.0 0.82
3 1.1 1.995
4 0.1 1.146
5 <NA> <NA>
6 1.1 1.995
資料
d <- structure(list(d = c(NA, "1/0:0.82", "1/1:1.995", "0/1:1.146",
NA, "1/1:1.995")), class = "data.frame", row.names = c(NA, -6L
))
編輯,對于任何其他替換使用:
d$d
[1] NA "1|0:0.82" "1|1:1.995" "0|1:1.146" NA "1|1:1.995"
data.frame( unname( t(data.frame( strsplit(sub("\\|","/",d$d), ":") )) ) )
X1 X2
1 <NA> <NA>
2 1/0 0.82
3 1/1 1.995
4 0/1 1.146
5 <NA> <NA>
6 1/1 1.995
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383090.html
下一篇:R中的布朗運動/回圈
