R 使用多个列创建新变量
我试图通过组合25个其他变量(夜间的不同时间点)来创建一个新变量。以下是五个时间点,例如:R 使用多个列创建新变量,r,loops,variables,if-statement,R,Loops,Variables,If Statement,我试图通过组合25个其他变量(夜间的不同时间点)来创建一个新变量。以下是五个时间点,例如: net_8pm net_830pm net_9pm net_930pm net_10pm net_1030pm 1 0 0 0 1 1 1 2 0 0 0 0 0 0 3 0 0 0
net_8pm net_830pm net_9pm net_930pm net_10pm net_1030pm
1 0 0 0 1 1 1
2 0 0 0 0 0 0
3 0 0 0 0 0 0
4 0 0 1 1 1 1
5 1 0 0 0 0 0
6 0 1 1 1 1 1
在我的数据中,它们是34:58列。如果他们昨晚使用了网络,则值为1,如果他们没有使用,则值为0。有一些缺失的数据点,编码为“NA”。如果任意时间点=1,我想使newvar=1,如果它们从未=1,我想使newvar=0
我尝试了一个很大的长ifelse字符串,它很难看,似乎不能拾取所有的行(我有182人,运行ifelse字符串时只得到160人)。我对自己的函数和循环做得很糟糕,所以我尝试过的一切都失败了。我要么得到恐惧——我尝试过的事情中大约90%:
for (i in colnames(df)[38:54]){
+ df$net_ever<- ifelse(i==1, 1,
+ ifelse(i==0, 0,
+ NA))
+ }
> table(df$net_ever)
< table of extent 0 >
for(i在colnames(df)[38:54]中){
+df$net\u ever表(df$net\u ever)
<范围表0>
或者变成4450行:
collapse_ifelse<-function(x){
+ ifelse(x==1, "yes",
+ ifelse(x==0, "no",
+ NA))
+ }
> df$net_ever<-apply(df, 2, FUN=collapse_ifelse)
collapse\if else df$net\u ever f1 df$net\u ever warnings()
警告信息:
1:In 1:x:数值表达式有182个元素:仅使用第一个元素
或者我得到1820分:
> df$net_ever2<-rep(0,182)
> for (i in 1:182){
+ ifelse(i==1, "yes",
+ ifelse(i==0, "no",
+ NA))
+ }
> table(df$net_ever)
0
182
>df$net_ever2 for(1:182中的i){
+如果else(i==1,“是”,
+如果else(i==0,“否”,
+NA))
+ }
>表(df$净额)
0
182
你可以看到,我不知道我在这里做什么(发布这些请求帮助已经够尴尬的了,但绝望的时候需要绝望的措施)。我非常感谢你帮助我如何折叠这些变量!我正在Windows 7上使用R3.0.3。谢谢!按行应用
任何:
df$net_ever <- apply(df[38:54], 1, any)
df$net\u曾经按行应用any
:
df$net_ever <- apply(df[38:54], 1, any)
df$net\u曾经按行应用any
:
df$net_ever <- apply(df[38:54], 1, any)
df$net\u曾经按行应用any
:
df$net_ever <- apply(df[38:54], 1, any)
df$net\u您可以添加参数na.rm=T
以确保生成的向量没有NAs。非常……简单……非常感谢!这正是我需要的!您可以添加参数na.rm=T
以确保生成的向量没有NAs。非常……简单……非常感谢!这正是我需要的我需要!您可以添加参数na.rm=T
以确保生成的向量没有NAs。如此…简单…非常感谢!这正是我需要的!您可以添加参数na.rm=T
以确保生成的向量没有NAs。如此…简单…非常感谢!这正是我需要的!