在R中转换数据帧
我们是否可以按照预期的输出转换这些数据在R中转换数据帧,r,R,我们是否可以按照预期的输出转换这些数据 ColA ColB ColC A - 0 B X 3 C Y 4 D X 51 D Y 32 预期产量 ColA X Y A 0 0 B 3 0 C 0 4 D 51 32 可能是这样的: library(dplyr) library(tidyr) d
ColA ColB ColC
A - 0
B X 3
C Y 4
D X 51
D Y 32
预期产量
ColA X Y
A 0 0
B 3 0
C 0 4
D 51 32
可能是这样的:
library(dplyr)
library(tidyr)
df %>%
mutate_at(vars(ColB:ColC), ~replace(., . == '-', 'X')) %>%
pivot_wider(names_from = ColB, values_from = ColC, values_fill = list(ColC = 0))
# ColA X Y
# <fct> <chr> <chr>
#1 A 0 0
#2 B 3 0
#3 C 0 4
#4 D 51 32
库(dplyr)
图书馆(tidyr)
df%>%
在(变量(ColB:ColC),~replace(,.='-','X'))%>%
透视图(名称从=ColB,值从=ColC,值填充=list(ColC=0))
#可乐
#
#1 A 0 0
#2B30
#3C04
#4 D 51 32
数据
df <- structure(list(ColA = structure(c(1L, 2L, 3L, 4L, 4L), .Label = c("A",
"B", "C", "D"), class = "factor"), ColB = structure(c(1L, 2L,
3L, 2L, 3L), .Label = c("-", "X", "Y"), class = "factor"), ColC = c(0L,
3L, 4L, 51L, 32L)), class = "data.frame", row.names = c(NA, -5L))
df是的,我们可以。
使用xtabs
:
res <- xtabs(ColC ~ ColA + ColB, dat)[,-1]
# ColB
# ColA X Y
# A 0 0
# B 3 0
# C 0 4
# D 51 32
res基于数据的简短解决方案。表
(如果您有大量数据,最推荐的选项)
colA=c(“A”、“B”、“c”、“D”、“D”)
colB=c(NA,“X”,“Y”,“X”,“Y”)
colC=c(0,3,4,51,32)
库(数据表)
dt
res <- as.data.frame(unclass(res))
res
# X Y
# A 0 0
# B 3 0
# C 0 4
# D 51 32
res <- as.data.frame(unclass(xtabs(ColC ~ ColA + ColB, dat)[,-1]))
dat <- structure(list(ColA = c("A", "B", "C", "D", "D"), ColB = c("-",
"X", "Y", "X", "Y"), ColC = c(0L, 3L, 4L, 51L, 32L)), row.names = c(NA,
-5L), class = "data.frame")