Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用多个列创建新变量_R_Loops_Variables_If Statement - Fatal编程技术网

R 使用多个列创建新变量

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

我试图通过组合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         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。如此…简单…非常感谢!这正是我需要的!