有一個包含數字1至4的手鐲。
library(tidyverse)
# reproducible data
sample_tbl < -結構(list(X1 = c(4L, 4L, 1L, 4L。 1L, 4L, 2L。 3L, 2L。 4L),
X2 = c(1L。 4L。 4L, 4L。 4L, 2L。 4L, 4L, 3L。 2L)。 X3 = c(4L,
3L, 3L。 3L, 2L。 2L, 1L。 1L, 4L。 2L)。 X4 = c(1L。 4L, 3L。 2L,
3L, 4L, 2L。 1L, 1L。 1L)。 X5 = c(1L。 3L, 3L。 1L, 2L。 2L, 3L,
3L,/span> 4L。 1L)。 X6 = c(2L。 3L。 4L, 4L。 3L, 2L。 4L, 1L。 1L, 3L
)。 X7 = c(3L, 4L, 1L。 2L, 3L。 3L, 2L。 2L, 2L。 1L)。 X8 = c(2L,
4L,/span> 4L。 2L, 3L。 2L, 3L。 4L, 3L。 4L)。 X9 = c(2L。 1L, 4L。 4L, 4L,
2L, 4L,。 1L, 3L。 3L)。 X10 = c(3L。 4L。 1L, 3L。 1L, 2L,
1L, 2L,。 3L))。 class = c("tbl_df"/span>。 "tbl", "data. 框架"
),行。 names = c(NA。 -10L))
# A tibble: 10 x 10
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
<int> <int> < int> <int> > <int> <int> < <。 int> <int> > <int>
1 4 1 4 1 1 2 3 2 2 3
2 4 4 3 4 3 3 4 4 1 4
3 1 4 3 3 3 4 1 4 4 1
4 4 4 3 2 1 4 2 2 4 3
5 1 4 2 3 2 3 3 3 2 1
6 4 2 2 4 2 2 3 2 4 2
7 2 4 1 2 3 4 2 3 4 1
8 3 4 1 1 3 1 2 4 1 2
9 2 3 4 1 4 1 2 3 3 2
10 4 2 2 1 1 3 1 4 3 3
我想把1和2改為0,3到4改為1。
預期輸出:
# A tibble: 10 x 10
X1 X2 X3
<int> <int> ...。
1 1 0 ...
2 1 1 ...
3 0 1 ...
4 1 1 ...
5 0 1 ...
6 1 0 ...
7 0 1 ...
8 1 1 ...
9 0 1 ...
10 1 0 ...
我想我可以使用dplyr::mutate(), dplyr::across(), dplyr::case_when()但是我想不出怎么做。
我怎樣才能做到這一點呢?
uj5u.com熱心網友回復:
使用整數除以3:
sample_tbl %/% 3
# X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
# 1 1 0 1 0 0 0 1 0 1
# 2 1 1 1 1 1 1 1 1 0 1
# 3 0 1 1 1 1 1 0 1 0
# 4 1 1 1 0 0 1 0 1 1
# 5 0 1 0 1 0 1 1 0 0
# 6 1 0 0 1 0 0 1 0
# 7 0 1 0 0 1 1 0 1 0
# 8 1 1 0 0 1 0 0 1 0 0
# 9 0 1 1 0 1 0 1 0
# 10 1 0 0 0 0 1 0 1 1 1
uj5u.com熱心網友回復:
我們可以回圈穿過列,用%in%在值為3,4的向量上創建一個邏輯向量,并將其強制為二進制
library(dplyr)
sample_tbl <- sample_tbl %>%
mutate(across(everything()。 ~ (. %in% c(3。 4))))
輸出
sample_tbl
# A tibble: 10 x 10
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
<int> <int> < int> <int> > <int> <int> < <。 int> <int> > <int>
1 1 0 1 0 0 0 1 0 0 1
2 1 1 1 1 1 1 1 1 0 1
3 0 1 1 1 1 1 0 1 1 0
4 1 1 1 0 0 1 0 0 1 1
5 0 1 0 1 0 1 1 1 0 0
6 1 0 0 1 0 0 1 0 1 0
7 0 1 0 0 1 1 0 1 1 0
8 1 1 0 0 1 0 0 1 0 0
9 0 1 1 0 1 0 0 1 1 0
10 1 0 0 0 0 1 0 1 1 1
如果我們需要使用case_when
sample_tbl <- sample_tbl %>%
mutate(across(everything()。 ~ case_when(. %in% c(3。 4) ~ 1,
. %in% c(1。 2) ~ 0)))
或者使用基礎R
sample_tbl[]/span> < - lapply(sample_tbl。 (x) (x %in% c(3。 4)))
data
sample_tbl < -結構(list(X1 = c(4L, 4L, 1L, 4L。 1L, 4L, 2L。 3L, 2L。 4L),
X2 = c(1L。 4L。 4L, 4L。 4L, 2L。 4L, 4L, 3L。 2L)。 X3 = c(4L,
3L, 3L。 3L, 2L。 2L, 1L。 1L, 4L。 2L)。 X4 = c(1L。 4L, 3L。 2L,
3L, 4L, 2L。 1L, 1L。 1L)。 X5 = c(1L。 3L, 3L。 1L, 2L。 2L, 3L,
3L,/span> 4L。 1L)。 X6 = c(2L。 3L。 4L, 4L。 3L, 2L。 4L, 1L。 1L, 3L
)。 X7 = c(3L, 4L, 1L。 2L, 3L。 3L, 2L。 2L, 2L。 1L)。 X8 = c(2L,
4L,/span> 4L。 2L, 3L。 2L, 3L。 4L, 3L。 4L)。 X9 = c(2L。 1L, 4L。 4L, 4L,
2L, 4L,。 1L, 3L。 3L)。 X10 = c(3L。 4L。 1L, 3L。 1L, 2L,
1L, 2L,。 3L)),行。 names = c(NA。 -10L)。 class = c("tbl_df"。
"tbl", "data.frame"))
uj5u.com熱心網友回復:
這里是一個基本的R選項。
把1和2改成0,其余的值改成1。
sample_tbl[/span>sample_tbl == 1 | sample_tbl == 2 ] < - 0
sample_tbl[/span>sample_tbl ! = 0]/span> <- 1
樣本_tbl
# X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
# <int> <int> <int> <int> <int> <int> <int>
# 1 1 1 1 1 1 1 0 0 1 1 1
# 2 0 1 0 0 1 1 0 1 1 1
# 3 1 1 0 1 0 1 0 1 0
# 4 1 1 1 1 1 1 1 0 0 1
# 5 1 0 1 1 0 1 0 0
# 6 1 1 0 1 1 1 1 1 0 1 2.
# 7 0 1 1 0 1 1 0 0 1
# 8 1 1 0 1 0 0 1 1 0 1
# 9 1 0 1 1 1 1 1 1 1
# 10 0 1 1 0 1 1 0 1 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/334053.html
標籤:
上一篇:我的aggregation()輸出和tidyverse輸出之間的差異
下一篇:如何使受讓人成為適當的環境變數?
