[英]How can I create a new column in a dataframe based on permutations of other columns?
[英]How to create a new column in a dataframe based on grouped permutations of another column
我有一個像這樣的數據框:
df <- data.frame(grouping = c(rep("site1_1",9), rep("site2_1",9)),
var = c(rep("P", 3), rep("G", 3), rep("B",3),rep("P", 3), rep("B", 3), rep("G",3)),
order= c(rep(0, 3), rep(1, 3), rep(2,3),rep(0, 3), rep(1, 3), rep(2,3)))
grouping var order
1 site1_1 P 0
2 site1_1 P 0
3 site1_1 P 0
4 site1_1 G 1
5 site1_1 G 1
6 site1_1 G 1
7 site1_1 B 2
8 site1_1 B 2
9 site1_1 B 2
10 site2_1 P 0
11 site2_1 P 0
12 site2_1 P 0
13 site2_1 B 1
14 site2_1 B 1
15 site2_1 B 1
16 site2_1 G 2
17 site2_1 G 2
18 site2_1 G 2
我有一列代表唯一的ID,稱為分組(不再重復)。 在每個分組中,我有3個變量(P,G和B)。 它們確實在分組中多次重復,如上所示。
順序始終為P,G,B或P,B,G。 在一個組中,P始終為0,B / G始終為1或2。它們在一個組中永遠不能為1和2,並且在組之間,B或G是1還是2是隨機的。
我有一個訂單欄來顯示var在每個組中的順序
我想添加一個新列,根據B是G之前還是B之前的標簽來標記整個分組(P,B和G)。
這是一個如下所示的示例:
grouping var order label
1 site1_1 P 0 Gfirst
2 site1_1 P 0 Gfirst
3 site1_1 P 0 Gfirst
4 site1_1 G 1 Gfirst
5 site1_1 G 1 Gfirst
6 site1_1 G 1 Gfirst
7 site1_1 B 2 Gfirst
8 site1_1 B 2 Gfirst
9 site1_1 B 2 Gfirst
10 site2_1 P 0 Bfirst
11 site2_1 P 0 Bfirst
12 site2_1 P 0 Bfirst
13 site2_1 B 1 Bfirst
14 site2_1 B 1 Bfirst
15 site2_1 B 1 Bfirst
16 site2_1 G 2 Bfirst
17 site2_1 G 2 Bfirst
18 site2_1 G 2 Bfirst
我不清楚如何執行此操作。
使用dplyr我首先開始
df%>%group_by(grouping)%>%mutate(標簽= .......
但是在此之后,我迷失了如何指定標簽以P,B和G的順序為條件,以及如何解釋它們在每個組中重復多次的事實。
我去了這個交易所:
但由於我需要按分組列對它們進行分組,並且需要考慮每個變量中排列的不同數量(每個分組中可以包含3-15個P,B和G,因此),因此尚不清楚如何采用答案。
任何幫助是極大的贊賞。
library(tidyverse)
df %>%
group_by(grouping) %>%
mutate(label = paste0(substr(gsub("[^G|B]", "", paste(unique(var), collapse = "")), 1, 1), "first"))
使用dplyr
和ifelse
一種解決方案可以實現為:
library(dplyr)
df %>% group_by(grouping) %>%
mutate(label = ifelse(var[var!="P"][1] == "B","BFirst","GFirst" )) %>%
as.data.frame()
# grouping var order label
# 1 site1_1 P 0 GFirst
# 2 site1_1 P 0 GFirst
# 3 site1_1 P 0 GFirst
# 4 site1_1 G 1 GFirst
# 5 site1_1 G 1 GFirst
# 6 site1_1 G 1 GFirst
# 7 site1_1 B 2 GFirst
# 8 site1_1 B 2 GFirst
# 9 site1_1 B 2 GFirst
# 10 site2_1 P 0 BFirst
# 11 site2_1 P 0 BFirst
# 12 site2_1 P 0 BFirst
# 13 site2_1 B 1 BFirst
# 14 site2_1 B 1 BFirst
# 15 site2_1 B 1 BFirst
# 16 site2_1 G 2 BFirst
# 17 site2_1 G 2 BFirst
# 18 site2_1 G 2 BFirst
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.