如何查看虚拟变量
How to view dummy variables
我有一个变量 (FTA),它有 2 个选项(是或否),我想创建一个虚拟变量来用 yes=1 和 no=0 替换它。从时间段(t)3开始,它应该等于1,之前应该是0.
df<-dummy.data.frame(df, names=c("FTA"), sep="_")
输入这行代码后,在查看数据汇总时看不出和之前有什么不同(还是统计变量名下面一栏的no和yes的个数)。
我也试过:
dummy <- as.numeric(t >= 3)
dummy2 <- as.numeric(t < 3)
以及:
ifelse(t >=3, 1, 0)
但我仍然无法观察到摘要有任何变化。
我这样做是否正确,我该怎么做才能查看我创建的虚拟变量并用它替换旧变量?
编辑:
Example of data
我的目标是创建一个替代 "FTA" 的虚拟变量。
这是你想要的吗? (以OP中的值4为临界分水岭)
# Data:
t <- c(1:10)
FTA <- sample(c("yes", "no"), 10, replace = T)
df <- data.frame(t, FTA)
df
t FTA
1 1 yes
2 2 yes
3 3 yes
4 4 no
5 5 no
6 6 no
7 7 yes
8 8 no
9 9 yes
10 10 yes
# Change `FTA` based on two conditions:
df$new <-ifelse(df$t >= 4 &df$FTA=="yes", 1,
ifelse(df$t >= 4 &df$FTA=="no", 0, as.character(df$FTA)))
df
t FTA new
1 1 yes yes
2 2 yes yes
3 3 yes yes
4 4 no 0
5 5 no 0
6 6 no 0
7 7 yes 1
8 8 no 0
9 9 yes 1
10 10 yes 1
您可以执行以下操作:
# sample data frame
df <- data.frame(t = c(1,2,3,4,5,6), flag = c('no','yes','yes','yes','yes','yes'))
# encode the values
df$flag <- ifelse(df$flag == 'yes',1, 0)
# set values as 0 before time = 3
df[df$t < 3, c('flag')] <- 0
t flag
1 1 0
2 2 0
3 3 1
4 4 1
5 5 1
6 6 1
我有一个变量 (FTA),它有 2 个选项(是或否),我想创建一个虚拟变量来用 yes=1 和 no=0 替换它。从时间段(t)3开始,它应该等于1,之前应该是0.
df<-dummy.data.frame(df, names=c("FTA"), sep="_")
输入这行代码后,在查看数据汇总时看不出和之前有什么不同(还是统计变量名下面一栏的no和yes的个数)。
我也试过:
dummy <- as.numeric(t >= 3)
dummy2 <- as.numeric(t < 3)
以及:
ifelse(t >=3, 1, 0)
但我仍然无法观察到摘要有任何变化。 我这样做是否正确,我该怎么做才能查看我创建的虚拟变量并用它替换旧变量?
编辑: Example of data
我的目标是创建一个替代 "FTA" 的虚拟变量。
这是你想要的吗? (以OP中的值4为临界分水岭)
# Data:
t <- c(1:10)
FTA <- sample(c("yes", "no"), 10, replace = T)
df <- data.frame(t, FTA)
df
t FTA
1 1 yes
2 2 yes
3 3 yes
4 4 no
5 5 no
6 6 no
7 7 yes
8 8 no
9 9 yes
10 10 yes
# Change `FTA` based on two conditions:
df$new <-ifelse(df$t >= 4 &df$FTA=="yes", 1,
ifelse(df$t >= 4 &df$FTA=="no", 0, as.character(df$FTA)))
df
t FTA new
1 1 yes yes
2 2 yes yes
3 3 yes yes
4 4 no 0
5 5 no 0
6 6 no 0
7 7 yes 1
8 8 no 0
9 9 yes 1
10 10 yes 1
您可以执行以下操作:
# sample data frame
df <- data.frame(t = c(1,2,3,4,5,6), flag = c('no','yes','yes','yes','yes','yes'))
# encode the values
df$flag <- ifelse(df$flag == 'yes',1, 0)
# set values as 0 before time = 3
df[df$t < 3, c('flag')] <- 0
t flag
1 1 0
2 2 0
3 3 1
4 4 1
5 5 1
6 6 1