如何解决带有自定义名称的宽数据透视表,单元格中的原始值 数据
我具有如下设置的数据-CODE变量是字符,由于数字具有含义,因此需要保留原样。
ID CODE
1 1.0
1 0.00
1 9.99
2 40.56
3 33.54
3 0.00
我将如何使用数据透视表更宽地重新排列它,使其类似于以下内容,其中我可以有4个CODE列,如果每个ID没有第四个代码,则将其留空
ID CODE_1 CODE_2 CODE_3 CODE_4
1 1.0 0.00 9.99 "."
2 40.56 "." "." "."
3 33.54 0.00 "." "."
谢谢!
解决方法
这种方法可以接近您想要的。您可以使用tidyverse
函数complete()
来启用原始值中不存在的级别。这里的代码:
library(tidyverse)
#Code
df <- df %>% group_by(ID) %>% mutate(Var=factor(paste0('CODE_',row_number()),levels = paste0('CODE_',1:4),labels = paste0('CODE_',ordered = T,exclude = F)) %>%
complete(Var = Var) %>%
pivot_wider(names_from = Var,values_from=CODE)
输出:
# A tibble: 3 x 5
# Groups: ID [3]
ID CODE_1 CODE_2 CODE_3 CODE_4
<int> <dbl> <dbl> <dbl> <dbl>
1 1 1 0 9.99 NA
2 2 40.6 NA NA NA
3 3 33.5 0 NA NA
使用了一些数据:
#Data
df <- structure(list(ID = c(1L,1L,2L,3L,3L),CODE = c(1,9.99,40.56,33.54,0)),class = "data.frame",row.names = c(NA,-6L))
如果您确实想要点缺失值,则必须将变量转换为字符,然后按以下方式分配替换:
#Code 2
df <- df %>% group_by(ID) %>% mutate(Var=factor(paste0('CODE_',values_from=CODE) %>%
mutate(across(CODE_1:CODE_4,~as.character(.))) %>%
replace(is.na(.),'.')
输出:
# A tibble: 3 x 5
# Groups: ID [3]
ID CODE_1 CODE_2 CODE_3 CODE_4
<int> <chr> <chr> <chr> <chr>
1 1 1 0 9.99 .
2 2 40.56 . . .
3 3 33.54 0 . .
,
我们可以使用isIphoneX: () => {
const dimen = Dimensions.get('window');
const deviceModel = DeviceInfo.getModel();
return (
deviceModel === 'iPhone X' ||
(Platform.OS === 'ios' &&
!Platform.isPad &&
!Platform.isTVOS &&
(dimen.height === 812 ||
dimen.width === 812 ||
dimen.height === 896 ||
dimen.width === 896))
);
},
中的dcast
data.table
数据
library(data.table)
dcast(setDT(df),ID ~ paste0("CODE_",rowid(ID)),value.var = 'CODE')
# ID CODE_1 CODE_2 CODE_3
#1: 1 1.00 0 9.99
#2: 2 40.56 NA NA
#3: 3 33.54 0 NA
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。