我的数据集存储在名为“Formula”的单列表中,如下所示:
row.identity..main.ID.
C5H6O2N3
C10H12N
C5H6O2N3S
Run Code Online (Sandbox Code Playgroud)
我想扩展当前表格,其中在每一列中写入字母并在相应数字下方的行中显示。基本上我想要这样的东西:
row.identity..main.ID. C H O N S X
C5H6O2N3 5 6 2 3 0 0
C10H12N 10 12 0 1 0 0
C5H6O2N3S 5 6 2 3 1 0
Run Code Online (Sandbox Code Playgroud)
如果代码可以灵活处理带有不同字母的更长数据集,那就太好了。到目前为止,我尝试实施 Onyambu 的解决方案。
library(tidyverse)
library(stringr)
Formula%>%mutate(row.identity..main.ID.=gsub("\\b([A-Za-z]+)\\b","\\30",row.identity..main.ID.),
elements=str_extract_all(row.identity..main.ID.,"[A-Za-z]+"),
value=str_extract_all(row.identity..main.ID.,"\\d+"))%>%
unnest()%>%pivot_wider(elements,value,fill=0)
Run Code Online (Sandbox Code Playgroud)
然而,这会导致一些错误,例如“不兼容的长度:4、3”。和/或cols现在在使用 unnest() 时需要。