Hello,
Something like this?
mc <- read.table(text = "
????? FID? IID?? PLATE
1 fam0110 G110 4RWG569
2 fam0113 G113? cherry
3 fam0114 G114? cherry
4 fam0117 G117 4RWG569
5 fam0118 G118 5XAV049
6 fam0119 G119? cherry
", header = TRUE)
library(dplyr)
library(tidyr)
mc %>%
? group_by(PLATE) %>%
? mutate(counts = n()) %>%
? pivot_wider(
??? id_cols = c("FID", "IID"),
??? names_from = "PLATE",
??? values_from = counts,
??? values_fill = list(counts = 0)
? )
Hope this helps,
Rui Barradas
?s 17:18 de 29/09/20, Ana Marija escreveu:
Hello,
I have a data frame like this:
?????? FID? IID?? PLATE
1 fam0110 G110 4RWG569
2 fam0113 G113? cherry
3 fam0114 G114? cherry
4 fam0117 G117 4RWG569
5 fam0118 G118 5XAV049
6 fam0119 G119? cherry
...
[1] 34
I am trying to make a new data frame which would look like this:
?????? FID? IID?? PLATE?? 4RWG569? cherry 5XAV049 ...
1 fam0110 G110 4RWG569? 2? 1? 1
2 fam0113 G113? cherry?? 1? 2? 1
3 fam0114 G114? cherry?? 1? 2? 1
4 fam0117 G117 4RWG569? 2? 1? 1
5 fam0118 G118 5XAV049?? 2? 1? 1
6 fam0119 G119? cherry?? 1? 2? 1
...
so the new data frame would have an additional 34 columns (for every
unique mc$PLATE) and if in the row of PLATE column the value is ==to
that column name I would have 2 otherwise 1
I tried to do this with:
library(reshape2)
? m2=dcast(mc, IID ~ PLATE)
Using PLATE as value column: use value.var to override.
Please advise,
Ana