相关疑难解决方法(0)

嵌套的ifelse语句

我还在学习如何将SAS代码翻译成R,然后收到警告.我需要了解我犯错误的地方.我想要做的是创建一个变量来总结和区分人口的3种状态:大陆,海外,外国人.我有一个包含2个变量的数据库:

  • 国籍:( idnat法国人,外国人),

如果idnat是法国人那么:

  • id出生地:( idbp大陆,殖民地,海外)

我想从汇总信息idnat,并idbp进入一个所谓的新变量idnat2:

  • 状态:k(大陆,海外,外国人)

所有这些变量都使用"字符类型".

列idnat2中预期的结果:

   idnat     idbp   idnat2
1  french mainland mainland
2  french   colony overseas
3  french overseas overseas
4 foreign  foreign  foreign
Run Code Online (Sandbox Code Playgroud)

这是我要在R中翻译的SAS代码:

if idnat = "french" then do;
   if idbp in ("overseas","colony") then idnat2 = "overseas";
   else idnat2 = "mainland";
end;
else idnat2 = "foreigner";
run;
Run Code Online (Sandbox Code Playgroud)

这是我在R中的尝试:

if(idnat=="french"){
    idnat2 <- "mainland"
} else if(idbp=="overseas"|idbp=="colony"){
    idnat2 <- "overseas"
} else {
    idnat2 <- …
Run Code Online (Sandbox Code Playgroud)

if-statement nested r sas

53
推荐指数
5
解决办法
17万
查看次数

如何将新列添加到数据框(前端不是)?

如何将新变量添加到现有数据框,但我想添加到前端而不是结尾.例如.我的数据框是

b c d
1 2 3
1 2 3
1 2 3
Run Code Online (Sandbox Code Playgroud)

我想添加一个新的变量a,所以数据框看起来像

a b c d
0 1 2 3
0 1 2 3
0 1 2 3
Run Code Online (Sandbox Code Playgroud)

r dataframe

45
推荐指数
5
解决办法
15万
查看次数

R编程 - 在现有矩阵中添加额外的列

我是R编程的初学者,我正在尝试将一个额外的列添加到具有50列的矩阵中.这个新列将是该行中前10个值的平均值.

randomMatrix <- generateMatrix(1,5000,100,50)
randomMatrix51 <- matrix(nrow=100, ncol=1)

for(ctr in 1:ncol(randomMatrix)){  
randomMatrix51.mat[1,ctr]  <- sum(randomMatrix [ctr, 1:10])/10
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误

Error in randomMatrix51.mat[1, ctr] <- sum(randomMatrix[ctr, 1:10])/10 :incorrect
number of subscripts on matrix
Run Code Online (Sandbox Code Playgroud)

我试过这个

cbind(randomMatrix,sum(randomMatrix [ctr, 1:10])/10)
Run Code Online (Sandbox Code Playgroud)

但它只适用于一行,如果我在循环中使用这个cbind所有旧的值都被写了.

如何在新列中添加前10个值的平均值.除了循环行之外,还有更好的方法吗?

statistics r

26
推荐指数
2
解决办法
9万
查看次数

标签 统计

r ×3

dataframe ×1

if-statement ×1

nested ×1

sas ×1

statistics ×1