It looks fine to me though I do not think the fdecstats in the unite command in needed.
You could try
unite( P1 , c(P1, P2, P3, P4, P5), sep = " ", remove = TRUE, na.rm = FALSE)
but I don't think it makes a difference.
Can you supply some sample data?
A very simple and very effective way to supply some data is to use the dput() command.
dput(mydata)
and then simply copy the output and paste it here. If you have a very large data set then a sample should be fine. To supply us with 100 rows of your data set do
dput(head(mydata , 100))
where mydata is the name of your dataframe or tibble