这是我读入数据帧的数据结构.
treatment egf mean se
10 uM PP2 -697.25 14124.349
10 uM PP2 1 nM EGF 14715.50 8862.012
DMSO 58589.25 7204.824
DMSO 1 nM EGF 87852.00 12149.159
Run Code Online (Sandbox Code Playgroud)
treatment和egf列的组合表示每列的唯一ID.我想创建一个组合这些列的列,以便我可以有一个唯一代表每一行的列.但是,由于EGF列中缺少值,当我使用粘贴时,它会解决这个烦人的问题:
>paste(rawp$treatment, rawp$egf, sep=" + ")
[1] "10 uM PP2 + " "10 uM PP2 + 1 nM EGF" "DMSO + "
[4] "DMSO + 1 nM EGF"
Run Code Online (Sandbox Code Playgroud)
当值丢失时,它仍然会将分隔符放在那里.我想读它:
[1] "10 uM PP2" "10 uM PP2 + 1 nM EGF" "DMSO"
[4] "DMSO + 1 nM EGF"
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我想要这样做的全部原因是因为我想用ggplot绘制数据,而且在指定x轴时似乎只需要1个唯一的列.
ggplot(data=rawp, aes(x=treatment, y=mean)) + geom_bar(stat="identity")
Run Code Online (Sandbox Code Playgroud)
因此,如果您还知道使用组合列在x轴上指定类别的替代方法,那将会很有帮助.
你可以在粘贴后删除"+":
sub(" \\+ $", "", paste(rawp$treatment, rawp$egf, sep=" + "))
Run Code Online (Sandbox Code Playgroud)
使用它会很好,sep = ifelse(egf == "", "", " + ")但sep参数paste不能成为矢量.解决方案:将其作为常规参数传递!
with(rawp, paste0(treatment, ifelse(egf == "", "", " + "), egf))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1130 次 |
| 最近记录: |