我有来自几个人的数据,一些人认为他们应该使用一个列来存储名称,而另一些人则认为他们应该使用相同的列来表示值。
在下面的dataframe中,我想将备注分为数值列和字符列:
df2 <- data.frame(group = c("a", "b", "c", "d", "e", "f"), var1 = c(3, 1, 2, 4, 3, 2),
remark = c( 2, "abc", 8, 2, "cfd", "afd"))我甚至不知道从哪里开始,但我希望能够>%>在其中。
发布于 2020-06-11 18:29:26
我们可以做以下工作
df2$remark.num <- as.numeric(as.character(df2$remark))
df2$remark.char <- sub("\\d*","",df2$remark)
df2 <- df2[,-3]输出
> df2
group var1 remark.num remark.char
1 a 3 2
2 b 1 NA abc
3 c 2 8
4 d 4 2
5 e 3 NA cfd
6 f 2 NA afd发布于 2020-06-11 18:29:56
如果我们使用as.numeric()强制remark列为数字,R将遇到无法转换的问题。我们可以这样利用:
df2$remark.num <- df2$remark %>% paste %>% as.numeric
df2$remark.alpha <- NA
df2$remark.alpha[is.na(df2$remark.num)] <- paste(df2$remark)[is.na(df2$remark.num)]输出:
> df2
group var1 remark remark.num remark.alpha
1 a 3 2 2 <NA>
2 b 1 abc NA abc
3 c 2 8 8 <NA>
4 d 4 2 2 <NA>
5 e 3 cfd NA cfd
6 f 2 afd NA afdhttps://stackoverflow.com/questions/62330857
复制相似问题