我有一个 df ( day.df) 列vial,我试图将其拆分为四个新列。新列将是treatment gender line block. day.df数据框还具有将保留的列& response。explanatory
所以day.df目前看起来像这样(31000 行中的前 4 行):
vial response explanatory
Xm1.1 0 4
Xm2.1 0 4
Xm3.1 0 4
Xm4.1 0 4
. . .
. . .
. . .
该vial列的当前内容看起来像这样Xm1.2......
- 第一个字符(显示为 X)可以是
X或A- 这将是treament. - 第二个字符(在示例中显示为
m)可以是m或f- 这是gender. - 第三个字符(显示为
1),范围为1-40- 这是line. - 第四个也是最后一个字符是
blockand 范围从1-4 - 这 ”。” 需要丢弃
因此,新的day.df看起来像这样(我使用四个“随机”行来说明每个新列中的变化):
vial response explanatory treatment gender line block
Xm1.1 0 4 X m 1 1
Am1.1 0 4 A m 1 1
Xf3.2 0 4 X f 3 2
Xm4.2 0 4 X m 4 2
. . .
. . .
. . .
我在网上浏览了如何做到这一点,这是我最接近的;我试图vial像这样拆分列...
> a=strsplit(day.df$vial,"")
> a[1] "Xm1.2"
但是当字符串的“行”部分大于 9 时出现问题,因为那里有两个字符,例如(对于vialis的行Af20.2)。
> a[300]
[[1]]
[1] "A" "f" "2" "0" "." "2"
应该读作:
> a[300]
[[1]]
[1] "A" "f" "20" "." "2"
所以我需要帮助解决的步骤是:
- 克服
line超过9时字符串部分的问题。 - 将拆分字符串的列表添加到
day.df所需的四个列中的数据框中