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把日期弄混了。。。