小编bal*_*our的帖子

嵌套的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万
查看次数

R - 将一列因子转换为二进制字符而不会丢失信息

我是R的新手,只是教自己如何使用它.我在Windows 7上使用R版本3.0.1(如果相关的话).

我无法将factors的数据转换为仅字符.我的数据如下:

activity <- c("1","2","10","ZZ")
Run Code Online (Sandbox Code Playgroud)

我想要的是输出

activity <- c("01","02","10","ZZ") 
Run Code Online (Sandbox Code Playgroud)

其中,每个字符串,如果只包含一个字符,应该以a 0为前缀(如上所示).

我尝试使用"as.character",但之前没有添加零.然后我发现sprintf并尝试:

activity <- sprintf("%02d", (activity))
# [1] "01" "02" "03" "04"
Run Code Online (Sandbox Code Playgroud)

这会在找到的任何单个数据前面添加零"0",但麻烦的是它会修改所有级别的数据(如上所示).

有谁知道这里有什么问题以及如何解决它?谢谢.

printf r character

1
推荐指数
1
解决办法
1024
查看次数

标签 统计

r ×2

character ×1

if-statement ×1

nested ×1

printf ×1

sas ×1