R 如何在组的特定日期中插入值?

R 如何在组的特定日期中插入值?,r,dplyr,R,Dplyr,我需要创建一个列,每次都显示2020-05-15中Audi列中的值,并且需要按列种类进行分组。因此,该列应仅显示CUs 169507、Fnds 49661 我试着用dplyr来做这件事,但最后用ungroup()没有成功 df<-structure(list(day = structure(c(18397, 18397, 18397, 18397, 18397, 18404, 18404, 18404, 18404, 18404, 18411, 18411, 18411, 18411,

我需要创建一个列,每次都显示
2020-05-15
Audi
列中的值,并且需要按列
种类进行分组。因此,该列应仅显示CUs 169507、Fnds 49661

我试着用
dplyr
来做这件事,但最后用
ungroup()
没有成功

df<-structure(list(day = structure(c(18397, 18397, 18397, 18397, 
18397, 18404, 18404, 18404, 18404, 18404, 18411, 18411, 18411, 
18411, 18411), class = "Date"), kind = c("CUs", "Fnds", "IFCI", 
"OPs", "OFs", "CUs", "Fnds", "IFCI", "OPs", "OFs", "IFCI", "CUs", 
"OFs", "OPs", "Fnds"), AUDI = c(169507, 49661, 101383, 633605, 
22108, 170566, 49280, 109490, 626342, 23448, 109831, 172303, 
25029, 643138, 49403), BMW= c(15657, 50841, 727780, 114076, 
74940, 15264, 48505, 743130, 75121, 71945, 752998, 15328, 71649, 
115422, 47686), Lexus= c(185164, 100502, 829163, 747681, 97048, 
185830, 97785, 852620, 701463, 95393, 862829, 187631, 96678, 
758560, 97089)), row.names = 606:620, class = "data.frame")

df使用
dplyr

df%>%
按(种类)分组%>%
过滤器(日期=='2020-05-15')%>%
选择(种类,新品牌=奥迪)%>%
右连接(df,by=c(“种类”))%>%
选择(日期、种类、奥迪、宝马、雷克萨斯、新款)
返回

#一个tible:15 x 6
#组别:种类[5]
day kind奥迪宝马雷克萨斯新款
1 2020-05-15 CUs 169507 15657 185164 169507
2 2020-05-22 CUs 170566 15264 185830 169507
3 2020-05-29 CUs 172303 15328 187631 169507
4 2020-05-15 Fnds 49661 50841 100502 49661
52020-05-22 Fnds 49280 48505 97785 49661
6 2020-05-29 Fnds 49403 47686 97089 49661
7 2020-05-15 IFCI 101383 727780 829163 101383
8 2020-05-22 IFCI 109490 743130 852620 101383
9 2020-05-29 IFCI 109831 752998 862829 101383
10 2020-05-15行动633605 114076 747681 633605
11 2020-05-22行动626342 75121 701463 633605
12 2020-05-29行动643138 115422 758560 633605
13 2020-05-15 OFs 22108 74940 97048 22108
14 2020-05-22 OFs 23448 71945 95393 22108
15 2020-05-29 OFs 25029 71649 96678 22108

使用
dplyr

df%>%
按(种类)分组%>%
过滤器(日期=='2020-05-15')%>%
选择(种类,新品牌=奥迪)%>%
右连接(df,by=c(“种类”))%>%
选择(日期、种类、奥迪、宝马、雷克萨斯、新款)
返回

#一个tible:15 x 6
#组别:种类[5]
day kind奥迪宝马雷克萨斯新款
1 2020-05-15 CUs 169507 15657 185164 169507
2 2020-05-22 CUs 170566 15264 185830 169507
3 2020-05-29 CUs 172303 15328 187631 169507
4 2020-05-15 Fnds 49661 50841 100502 49661
52020-05-22 Fnds 49280 48505 97785 49661
6 2020-05-29 Fnds 49403 47686 97089 49661
7 2020-05-15 IFCI 101383 727780 829163 101383
8 2020-05-22 IFCI 109490 743130 852620 101383
9 2020-05-29 IFCI 109831 752998 862829 101383
10 2020-05-15行动633605 114076 747681 633605
11 2020-05-22行动626342 75121 701463 633605
12 2020-05-29行动643138 115422 758560 633605
13 2020-05-15 OFs 22108 74940 97048 22108
14 2020-05-22 OFs 23448 71945 95393 22108
15 2020-05-29 OFs 25029 71649 96678 22108

您也可以使用以下解决方案,我猜根据您的问题描述,
day
列中您要查找的值是
2020-05-15

library(dplyr)
library(lubridate)

df %>% 
  group_by(kind) %>%
  mutate(across(AUDI, ~ .x[day == ymd("2020-05-15")], .names = "new_{.col}")) %>%
  arrange(kind)


# A tibble: 15 x 6
# Groups:   kind [5]
   day        kind    AUDI    BMW  Lexus new_AUDI
   <date>     <chr>  <dbl>  <dbl>  <dbl>    <dbl>
 1 2020-05-15 CUs   169507  15657 185164   169507
 2 2020-05-22 CUs   170566  15264 185830   169507
 3 2020-05-29 CUs   172303  15328 187631   169507
 4 2020-05-15 Fnds   49661  50841 100502    49661
 5 2020-05-22 Fnds   49280  48505  97785    49661
 6 2020-05-29 Fnds   49403  47686  97089    49661
 7 2020-05-15 IFCI  101383 727780 829163   101383
 8 2020-05-22 IFCI  109490 743130 852620   101383
 9 2020-05-29 IFCI  109831 752998 862829   101383
10 2020-05-15 OFs    22108  74940  97048    22108
11 2020-05-22 OFs    23448  71945  95393    22108
12 2020-05-29 OFs    25029  71649  96678    22108
13 2020-05-15 OPs   633605 114076 747681   633605
14 2020-05-22 OPs   626342  75121 701463   633605
15 2020-05-29 OPs   643138 115422 758560   633605
库(dplyr)
图书馆(lubridate)
df%>%
按(种类)分组%>%
变异(跨越(奥迪,~.x[day==ymd(“2020-05-15”),.names=“new_{.col}”))%>%
安排(种类)
#一个tibble:15x6
#组别:种类[5]
day kind奥迪宝马雷克萨斯新款奥迪
1 2020-05-15 CUs 169507 15657 185164 169507
2 2020-05-22 CUs 170566 15264 185830 169507
3 2020-05-29 CUs 172303 15328 187631 169507
4 2020-05-15 Fnds 49661 50841 100502 49661
52020-05-22 Fnds 49280 48505 97785 49661
6 2020-05-29 Fnds 49403 47686 97089 49661
7 2020-05-15 IFCI 101383 727780 829163 101383
8 2020-05-22 IFCI 109490 743130 852620 101383
9 2020-05-29 IFCI 109831 752998 862829 101383
10 2020-05-15 OFs 22108 74940 97048 22108
11 2020-05-22 OFs 23448 71945 95393 22108
12 2020-05-29 OFs 25029 71649 96678 22108
13 2020-05-15行动633605 114076 747681 633605
14 2020-05-22行动626342 75121 701463 633605
15 2020-05-29行动643138 115422 758560 633605

您也可以使用以下解决方案,我猜根据您的问题描述,
day
列中您要查找的值是
2020-05-15

library(dplyr)
library(lubridate)

df %>% 
  group_by(kind) %>%
  mutate(across(AUDI, ~ .x[day == ymd("2020-05-15")], .names = "new_{.col}")) %>%
  arrange(kind)


# A tibble: 15 x 6
# Groups:   kind [5]
   day        kind    AUDI    BMW  Lexus new_AUDI
   <date>     <chr>  <dbl>  <dbl>  <dbl>    <dbl>
 1 2020-05-15 CUs   169507  15657 185164   169507
 2 2020-05-22 CUs   170566  15264 185830   169507
 3 2020-05-29 CUs   172303  15328 187631   169507
 4 2020-05-15 Fnds   49661  50841 100502    49661
 5 2020-05-22 Fnds   49280  48505  97785    49661
 6 2020-05-29 Fnds   49403  47686  97089    49661
 7 2020-05-15 IFCI  101383 727780 829163   101383
 8 2020-05-22 IFCI  109490 743130 852620   101383
 9 2020-05-29 IFCI  109831 752998 862829   101383
10 2020-05-15 OFs    22108  74940  97048    22108
11 2020-05-22 OFs    23448  71945  95393    22108
12 2020-05-29 OFs    25029  71649  96678    22108
13 2020-05-15 OPs   633605 114076 747681   633605
14 2020-05-22 OPs   626342  75121 701463   633605
15 2020-05-29 OPs   643138 115422 758560   633605
库(dplyr)
图书馆(lubridate)
df%>%
按(种类)分组%>%
变异(跨越(奥迪,~.x[day==ymd(“2020-05-15”),.names=“new_{.col}”))%>%
安排(种类)
#一个tibble:15x6
#组别:种类[5]
day kind奥迪宝马雷克萨斯新款奥迪
1 2020-05-15 CUs 169507 15657 185164 169507
2 2020-05-22 CUs 170566 15264 185830 169507
3 2020-05-29 CUs 172303 15328 187631 169507
4 2020-05-15 Fnds 49661 50841 100502 49661
52020-05-22 Fnds 49280 48505 97785 49661
6 2020-05-29 Fnds 49403 47686 97089 49661
7 2020-05-15 IFCI 101383 727780 829163 101383
8 2020-05-22 IFCI 109490 743130 852620 101383
9 2020-05-29 IFCI 109831 752998 862829 101383
10 2020-05-15 OFs 22108 74940 97048 22108
11 2020-05-22 OFs 23448 71945 95393 22108
12 2020-05-29 OFs 25029 71649 96678 22108
13 2020-05-15行动633605 114076 747681 633605
14 2020-05-22行动626342 75121 701463 633605
15 2020-05-29行动643138 115422 758560 633605

请你再详细说明一下你想要的输出是什么样子好吗?@AnoushiravanR附在问题上,请你再详细说明一下你想要的输出是什么样子好吗?@AnoushiravanR附在问题上我想OP把日期弄混了……我想OP把日期弄混了。。。