如何解决R-使用部分值作为后缀
我有这样的数据框:
tall <- data.frame(X=c(1,2,3,4,5,6),Y=c(1.1,2.1,3.1,1.2,2.2,3.2))
X Y
1 1 1.1
2 2 2.1
3 3 3.1
4 4 1.2
5 5 2.2
6 6 3.2
我想要这个:
wide <- data.frame(X.1 = c(1,3),X.2 = c(4,Y = c(1,3))
X.1 X.2 Y
1 1 4 1
2 2 5 2
3 3 6 3
初始“ Y”变量具有两部分的值(在“。”之前和之后)。我想要的是使用“ Y”值的第二部分将“ X”列分为两列。 “ Y”值的第一部分应在“ Y”变量中保持不变。就像我要分离“ Y”变量的一部分并将其用作将X变量一分为二的基础一样。
我试图将“ pivot_wider”与name_prefix或name_patterns一起使用,但被卡住了。我是R的中级用户,所以请提出一些不太复杂的建议;) 谢谢!
解决方法
separate
Y
列分成两列,然后以宽格式获取数据。
library(tidyr)
tall %>%
separate(Y,c('Y','Y2'),sep = '\\.') %>%
pivot_wider(names_from = Y2,values_from = X,names_prefix = 'X.')
# A tibble: 3 x 3
# Y X.1 X.2
# <chr> <dbl> <dbl>
#1 1 1 4
#2 2 2 5
#3 3 3 6
,
我们可以使用data.table
library(data.table)
dcast(setDT(tall)[,'Y2') := tstrsplit(Y,split="\\.")],Y ~ paste0('X.',Y2),value.var = 'X')
# Y X.1 X.2
#1: 1 1 4
#2: 2 2 5
#3: 3 3 6
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。