【发布时间】:2020-05-09 06:17:07
【问题描述】:
我有 1 列 input.csv,我想转换为 3 列,基于一些逻辑校准。
我已经通过 Excel 公式完成了output.csv,可以工作,但现在我想在 R 中运行...
到目前为止,在 R 中,我的想法是在 col 2 中分配一些类别,如下面的 draft.R。
我该如何改进它?详情请见Google Excel link。
我还在表格中附加了一个无花果并突出显示颜色以显示逻辑。
#draft.R
in1 = read.csv("input.csv")
df2 <- in1
df2$V2 <- ifelse(
grepl("LAYER",df2$V1),1,
ifelse(grepl("DATATYPE",df2$V1),2,0
)
)
df2 <- as.data.frame(df2)
df2
#input.csv
V1
LAYER: 34 ;
DATATYPE: 0 ;
0;0
10;0
10;0.9
0;0.9
0;0
LAYER: 34 ;
DATATYPE: 0 ;
0;9.1
10;9.1
10;10
0;10
0;9.1
LAYER: 44 ;
DATATYPE: 10 ;
9.52;1.3
9.8;1.3
9.8;9.1
9.52;9.1
9.52;1.3
#I expect output.csv
V1 group L;D
0;0 1 34;0
10;0 1 34;0
10;0.9 1 34;0
0;0.9 1 34;0
0;0 1 34;0
0;9.1 2 34;0
10;9.1 2 34;0
10;10 2 34;0
0;10 2 34;0
0;9.1 2 34;0
9.52;1.3 3 44;10
9.8;1.3 3 44;10
9.8;9.1 3 44;10
9.52;9.1 3 44;10
9.52;1.3 3 44;10
【问题讨论】:
-
请使用
dput(head(df,n))而非链接添加示例数据 -
看起来您粘贴了错误的预期输出,“L;D”列中的预期第二个数字是否一直为 0?参考案例最后 5 行的预期输出。
-
嗨,我附上了一个无花果,例如L;D = 层:34 ;数据类型:0 ;.
-
我说的是最后一组 LAYER:44; DATATYPE:10 并且在您想要的输出中 L:D 有 44;0 。无论我从模式中了解到什么,它都可能是 44;10。或者您只希望它是 44;0
-
对不起,错字。 44:10 正确。谢谢。
标签: r dataframe parsing format grepl