R 为杂乱的数据进行数据透视
我有这样的数据R 为杂乱的数据进行数据透视,r,pivot,R,Pivot,我有这样的数据 structure(list(V1 = c("ABT", "AK", "AT", "AZ", "BG", "BT"), V2.1 = c("MLC_7", "MLC_07", "MLC_04", "MLC_07", "0", "0"), V2.
structure(list(V1 = c("ABT", "AK", "AT", "AZ", "BG", "BT"), V2.1 = c("MLC_7", "MLC_07", "MLC_04", "MLC_07", "0", "0"), V2.2 = c("MLC_8", "0", "MLC_05", "RND_01", "0", "0"), V2.3 = c("0", "0", "0", "0", "0", "0"), V2.4 = c("0", "0", "0", "0", "0", "0"), V2.5 = c("0", "0", "0", "0", "0", "0")), row.names = c(NA, 6L), class = "data.frame")
我需要使用V2.1:V2.5中的变量,以便
V1
MLC\u RND
身份证件
ABT
MLC
7.
ABT
MLC
8.
AK
MLC
7.
在
MLC
4.
在
MLC
5.
我们可以使用pivot_longer将其重新格式化为“long”格式,然后过滤值不是“0”的“MLC”列,并将其分为多个列
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = V2.1:V2.5, values_to = 'MLC') %>%
dplyr::filter(MLC != "0") %>%
separate(MLC, into = c("MLC_RND", "ID"))
这里有一个data.table选项
给
V1 MLC_RND ID
1: ABT MLC 7
2: ABT MLC 8
3: AK MLC 7
4: AT MLC 4
5: AT MLC 5
6: AZ MLC 7
7: AZ RND 1
枢轴、过滤和分离应足够长。如果显示您尝试的内容,则会更好。如果ID列需要为数字,则添加mutateID=as。numericID@BenNorris您可以单独使用convert=TRUE
V1 MLC_RND ID
1: ABT MLC 7
2: ABT MLC 8
3: AK MLC 7
4: AT MLC 4
5: AT MLC 5
6: AZ MLC 7
7: AZ RND 1