我在工作表中做了错误的数据结构。现在我填充了一些字段,并希望以正确的方式重做它。
tenta uppg gjord?a gjord?b gjord?c del
1301 1 0 0 0 1
1301 1 0 0 0 1
1301 2 0 0 0 1
1301 3 0 0 0 1
1301 4 0 0 0 2
1301 5 0 0 0 2
1301 6 0 0 0 2
1303 1 0.1 1 1 1
1303 2 1 0 - 1
1402 6 1 0.1 - 2
我的数据子集,其中del = 1
我想重铸结构
这样我就可以在表格上得到一个整洁的数据集:
tenta uppg del gjord? del
1303 1 a 0.1 1
1303 1 b 1 1
1303 1 c 1 1
1303 2 a 0 1
1303 2 b 0 1
1402 6 0 1 2
如果那太难了 我很好 为del = 2的子集做新行abc以及 所以我会得到
tenta uppg del gjord? del
1303 1 a 0.1 1
1303 1 b 1 1
1303 1 c 1 1
1303 2 a 0 1
1303 2 b 0 1
1402 6 a 1 2
1402 6 b 0.1 2
答案 0 :(得分:1)
我认为这与您的描述相符,正如我在评论中所说,您的输出与您所说的内容并不匹配:
library(dplyr)
library(tidyr)
dat <- read.table(text="tenta uppg gjord?a gjord?b gjord?c del
1301 1 0 0 0 1
1301 1 0 0 0 1
1301 2 0 0 0 1
1301 3 0 0 0 1
1301 4 0 0 0 2
1301 5 0 0 0 2
1301 6 0 0 0 2
1303 1 0.1 1 1 1
1303 2 1 0 - 1
1402 6 1 0.1 - 2", stringsAsFactors=FALSE, header=TRUE)
dat
## tenta uppg gjord.a gjord.b gjord.c del
## 1 1301 1 0.0 0.0 0 1
## 2 1301 1 0.0 0.0 0 1
## 3 1301 2 0.0 0.0 0 1
## 4 1301 3 0.0 0.0 0 1
## 5 1301 4 0.0 0.0 0 2
## 6 1301 5 0.0 0.0 0 2
## 7 1301 6 0.0 0.0 0 2
## 8 1303 1 0.1 1.0 1 1
## 9 1303 2 1.0 0.0 - 1
## 10 1402 6 1.0 0.1 - 2
dat %>%
filter(del==1) %>%
gather(gjord, val, starts_with("gjord")) %>%
mutate(gjord=sub("^gjord\\.", "", gjord)) %>%
distinct()
## tenta uppg del gjord val
## 1 1301 1 1 a 0
## 2 1301 2 1 a 0
## 3 1301 3 1 a 0
## 4 1303 1 1 a 0.1
## 5 1303 2 1 a 1
## 6 1301 1 1 b 0
## 7 1301 2 1 b 0
## 8 1301 3 1 b 0
## 9 1303 1 1 b 1
## 10 1303 2 1 b 0
## 11 1301 1 1 c 0
## 12 1301 2 1 c 0
## 13 1301 3 1 c 0
## 14 1303 1 1 c 1
## 15 1303 2 1 c -
我认为你想要不同的行,但如果没有,只需删除distinct