楼主: 飞天玄舞6
1116 4

[有偿编程] 为什么在R中汉字修改不了呢 [推广有奖]

  • 3关注
  • 31粉丝

VIP1

已卖:3014份资源

学科带头人

13%

(VIP/贵宾)十级

24%

TA的文库  其他...

综合文库

威望
0
论坛币
153870 个
通用积分
4226.4633
学术水平
128 点
热心指数
148 点
信用等级
102 点
经验
76635 点
帖子
1502
精华
0
在线时间
1519 小时
注册时间
2013-12-2
最后登录
2025-11-25

楼主
飞天玄舞6 在职认证  发表于 2017-2-21 15:21:50 |AI写论文
15论坛币
有一列数据,也就是文化程度,包括小学,初中等,比如要把高中,初中都归为中学,我用的if句,但为什么修改不了呢
我是这样做的:
  1. if (dat1$文化程度 == "初中") dat1$文化程度 <- "中学"
  2. if (dat1$文化程度 == "高中") dat1$文化程度 <- "中学"
复制代码

但是这样修改不了
  1. for(i in dim(dat1)[1]){
  2.        if (dat1$文化程度[i] == "初中") dat1$文化程度[i] <- "中学"
  3.        if (dat1$文化程度[i] == "高中") dat1$文化程度[i] <- "中学"
  4. }
复制代码

这样仍修改不了,请问为什么?

最佳答案

松石空月 查看完整内容

参考代码, 忽略图片(不会删除)如果是两个if连用如下: if(){ }else if(){ } 不过此例中if条件可以合并
关键词:汉字 初中 高中 中学
strive for the best, prepare for the worst.

沙发
松石空月 发表于 2017-2-21 15:21:51
参考代码, 忽略图片(不会删除)如果是两个if连用如下:
if(){
}else if(){
}
不过此例中if条件可以合并
  1. library(tidyverse)
  2. a1 <- c("小学","初中","高中" )
  3. a <- data.frame("文化程度" = rep(a1, times = 10))
  4. a$文化程度 <- as.character(a$文化程度)

  5. # method1
  6. for(i in 1:length(a$文化程度)){
  7.   if(a$文化程度[i] %in% c("初中" ,"高中")){
  8.     a$文化程度[i] <- "中学"
  9.   }
  10. }

  11. # method2
  12. a$文化程度 <- a$文化程度 %>%
  13.   str_replace_all(pattern = "初中", replacement = "中学") %>%
  14.   str_replace_all(pattern = "高中", replacement = "中学")

  15. # method3
  16. a$文化程度 <- str_replace_all(as.vector(a$文化程度), c("初中" = "中学", "高中" = "中学"))

  17. # method4
  18. a$文化程度 <- factor(a$文化程度,
  19.                  levels = c("小学","初中","高中"),
  20.                  labels = c("小学","中学","中学"))
复制代码

捕获.PNG (8.41 KB)

捕获.PNG

已有 1 人评分经验 学术水平 热心指数 收起 理由
飞天玄舞6 + 100 + 1 + 1 精彩帖子

总评分: 经验 + 100  学术水平 + 1  热心指数 + 1   查看全部评分

藤椅
AlexYoung757 在职认证  学生认证  发表于 2017-2-21 16:20:51
直接用gsub函数就可以了newdata <- gsub("[初中|高中]","中学",data)
已有 1 人评分经验 收起 理由
飞天玄舞6 + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

板凳
飞天玄舞6 在职认证  发表于 2017-2-21 19:58:53
松石空月 发表于 2017-2-21 18:52
参考代码, 忽略图片(不会删除)如果是两个if连用如下:
if(){
}else(){
谢谢!

报纸
飞天玄舞6 在职认证  发表于 2017-2-21 19:59:52
AlexYoung757 发表于 2017-2-21 16:20
直接用gsub函数就可以了newdata
应该是"(初中|高中)"

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 05:14