在 tidyverse 中循环
Loop in tidyverse
我正在学习 tidyverse()
,我正在使用时间序列数据集,我选择了以 sec
开头的列。我基本上想从等于 123 的列中识别出那些值,保留这些值并将其余值替换为 0。但我不知道如何从 sec1:sec4
开始循环。另外我怎样才能 sum()
每列?
df1<-df %>%
select(starts_with("sec")) %>%
select(ifelse("sec1:sec4"==123, 1, 0))
示例数据:
structure(list(sec1 = c(1, 123, 1), sec2 = c(123, 1, 1), sec3 = c(123,
0, 0), sec4 = c(1, 123, 1)), spec = structure(list(cols = list(
sec1 = structure(list(), class = c("collector_double", "collector"
)), sec2 = structure(list(), class = c("collector_double",
"collector")), sec3 = structure(list(), class = c("collector_double",
"collector")), sec4 = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), delim = ","), class = "col_spec"), row.names = c(NA,
-3L), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"))
我认为您必须使用 mutate 和 across 来完成此操作。在下面,您将在以 sec 开头的每一列中进行变异,然后保留所有 123 的值并将所有其他值替换为 0.
df1<-df %>%
select(starts_with("sec")) %>%
mutate(across(starts_with("sec"),.fns = function(x){ifelse(x == 123,x,0)}))
我正在学习 tidyverse()
,我正在使用时间序列数据集,我选择了以 sec
开头的列。我基本上想从等于 123 的列中识别出那些值,保留这些值并将其余值替换为 0。但我不知道如何从 sec1:sec4
开始循环。另外我怎样才能 sum()
每列?
df1<-df %>%
select(starts_with("sec")) %>%
select(ifelse("sec1:sec4"==123, 1, 0))
示例数据:
structure(list(sec1 = c(1, 123, 1), sec2 = c(123, 1, 1), sec3 = c(123,
0, 0), sec4 = c(1, 123, 1)), spec = structure(list(cols = list(
sec1 = structure(list(), class = c("collector_double", "collector"
)), sec2 = structure(list(), class = c("collector_double",
"collector")), sec3 = structure(list(), class = c("collector_double",
"collector")), sec4 = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), delim = ","), class = "col_spec"), row.names = c(NA,
-3L), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"))
我认为您必须使用 mutate 和 across 来完成此操作。在下面,您将在以 sec 开头的每一列中进行变异,然后保留所有 123 的值并将所有其他值替换为 0.
df1<-df %>%
select(starts_with("sec")) %>%
mutate(across(starts_with("sec"),.fns = function(x){ifelse(x == 123,x,0)}))