繁体   English   中英

将一个细胞分裂为不同的细胞

[英]Splinting one cell to different cells

我已读取csv文件,其中包含以下格式的数据:

A   0.1
B   0.2
C   .1,.2,.4,.6
D   .1,.2,.4,.6
E   0.2

我想这样设置:

A   B   C   D   E
0.1 0.2 0.1 0.1 0.2
        0.2 0.2 
        0.4 0.4 
        0.6 0.6

我正在使用代码:

test <- read.csv("test.csv")

test_t <- setNames(data.frame(t(test[,-1])), test[,1])

这给出了错误:

setNames(data.frame(t(test [,-1])),test [,1])中的错误:
“名称”属性[4]的长度必须与矢量[1]的长度相同

使用:

library(splitstackshape)
dcast(cSplit(df, 'V2', ',','long'), rowid(V1) ~ V1)[,-1]

得到:

  ABCDE 1: 0.1 0.2 0.1 0.1 0.2 2: NA NA 0.2 0.2 NA 3: NA NA 0.4 0.4 NA 4: NA NA 0.6 0.6 NA 

没有额外包装的解决方案:

splt <- strsplit(as.character(df$V2),',')
df2 <- data.frame(V1 = rep(df$V1, lengths(splt)),
                  V2 = as.numeric(unlist(splt)),
                  id = unlist(lapply(splt, seq_along)))

df3 <- reshape(df2, idvar = 'id', timevar = 'V1', direction = 'wide')

得到类似的结果:

 > df3 V2.A V2.B V2.C V2.D V2.E 1 0.1 0.2 0.1 0.1 0.2 4 NA NA 0.2 0.2 NA 5 NA NA 0.4 0.4 NA 6 NA NA 0.6 0.6 NA 

如果要获得与第一个解决方案完全相同的列名:

names(df3) <- gsub('V2.', '', names(df3), fixed = TRUE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM