我有以下資料:
data<-read.table (text=" ID Name Surname colour A1 A2 A3 Income1 M1 M2 M3 Income2 P1 P2 P3 Income3 Y1 Y2 Y3 Inccome4 R1 R2 R3 Income5 B1 B2 B3 Income6
656 Nim Kami blue 12 20 18 A NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
656 Nim Kami yellow NA NA NA NA NA NA NA NA 16 19 18 B NA NA NA NA 9 1 2 Q NA NA NA NA
656 Nim Kami red NA NA NA NA 12 14 11 M NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
656 Nim Kami black NA NA NA NA NA NA NA NA NA NA NA NA 15 16 18 G NA NA NA NA 12 12 12 Q
444 Liz Zor dark 10 10 10 Q NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
444 Liz Zor purple NA NA NA NA NA NA NA NA NA NA NA NA 14 11 18 M NA NA NA NA NA NA NA NA
444 Liz Zor gray NA NA NA NA 20 20 20 D NA NA NA NA NA NA NA NA 11 11 11 G NA NA NA NA
444 Liz Zor green NA NA NA NA NA NA NA NA 13 11 10 R NA NA NA NA NA NA NA NA 19 11 6 Z
", header=TRUE)
結果將是:
OUTCOME<-read.table (text="ID Name Surname colour1 A1 A2 A3 Income1 colour2 M1 M2 M3 Income2 colour3 P1 P2 P3 Income3 colour4 Y1 Y2 Y3 Income4 colour5 R1 R2 R3 Income5 colour6 B1 B2 B3 Income6
656 Nim Kami blue 12 20 18 A red 12 14 11 M yellow 16 19 18 B black 15 16 18 G yellow 9 1 2 Q black 12 12 12 Q
444 Liz Zor dark 10 10 10 Q gray 20 20 20 D green 13 11 10 R purple 14 11 18 M gray 11 11 11 G green 19 11 6 Z
", header=TRUE)
我想洗掉重復項,然后創建顏色 1 到顏色 6。
uj5u.com熱心網友回復:
一個可能的解決方案,基于purrr::map_dfr:
library(tidyverse)
data %>%
group_split(ID) %>%
map_dfr(
~ data.frame(
ID = .x$ID[1],
Name = .x$Name[1],
Surname = .x$Surname[1],
Color1 = .x$colour[!is.na(.x$A1)],
A1 = .x$A1[!is.na(.x$A1)],
A2 = .x$A2[!is.na(.x$A2)],
A3 = .x$A3[!is.na(.x$A3)],
Income1 = .x$Income1[!is.na(.x$Income1)],
Color2 = .x$colour[!is.na(.x$M1)],
M1 = .x$M1[!is.na(.x$M1)],
M2 = .x$M2[!is.na(.x$M2)],
M3 = .x$M3[!is.na(.x$M3)],
Income2 = .x$Income2[!is.na(.x$Income2)],
Color3 = .x$colour[!is.na(.x$P1)],
P1 = .x$P1[!is.na(.x$P1)],
P2 = .x$P2[!is.na(.x$P2)],
P3 = .x$P3[!is.na(.x$P3)],
Income3 = .x$Income3[!is.na(.x$Income3)],
Color4 = .x$colour[!is.na(.x$Y1)],
Y1 = .x$Y1[!is.na(.x$Y1)],
Y2 = .x$Y2[!is.na(.x$Y2)],
Y3 = .x$Y3[!is.na(.x$Y3)],
Income4 = .x$Inccome4[!is.na(.x$Inccome4)],
Color5 = .x$colour[!is.na(.x$R1)],
R1 = .x$R1[!is.na(.x$R1)],
R2 = .x$R2[!is.na(.x$R2)],
R3 = .x$R3[!is.na(.x$R3)],
Income5 = .x$Income5[!is.na(.x$Income5)],
Color6 = .x$colour[!is.na(.x$B1)],
B1 = .x$B1[!is.na(.x$B1)],
B2 = .x$B2[!is.na(.x$B2)],
B3 = .x$B3[!is.na(.x$B3)],
Income6 = .x$Income6[!is.na(.x$Income6)]
)
)
#> ID Name Surname Color1 A1 A2 A3 Income1 Color2 M1 M2 M3 Income2 Color3 P1 P2
#> 1 444 Liz Zor dark 10 10 10 Q gray 20 20 20 D green 13 11
#> 2 656 Nim Kami blue 12 20 18 A red 12 14 11 M yellow 16 19
#> P3 Income3 Color4 Y1 Y2 Y3 Income4 Color5 R1 R2 R3 Income5 Color6 B1 B2 B3
#> 1 10 R purple 14 11 18 M gray 11 11 11 G green 19 11 6
#> 2 18 B black 15 16 18 G yellow 9 1 2 Q black 12 12 12
#> Income6
#> 1 Z
#> 2 Q
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/347581.html
標籤:r
下一篇:如何保留那些重復多次的字串
