【R语言】数据框的增删改,if语句,if else语句

数据框的增删改

#增加行
a<-data.frame(姓名=c("韩","梦","转"),
              成绩=c(66,100,99),
              籍贯=c("陕西","山西","四川"),
              stringsAsFactors=FALSE #默认是TRUE,意味着字符串创建的数据框,R会将向量处理为因子,而在增加样本数据时,加入一个除因子以外的数据,会报错,所以一般不希望这样处理,将其设置为FALSE
)
a
mylist<-list("小王",100,"辽宁")
a<-rbind(a,mylist)
a #这是用list增加

a
mylist<-c("小王",100,"辽宁")
a<-rbind(a,mylist)
a #这是用向量增加
#增加列
a<-data.frame(姓名=c("韩","梦","转"),
              成绩=c(66,100,99),
              籍贯=c("陕西","山西","四川")
              )
a
mylist<-list(性别=c("男","男","女"))#性别后面必须用等号
a<-cbind(a,mylist)
a#这是用cbind增加列

性别=c("男","男","女")
a<-cbind(a,性别)
a#这是用cbind增加列


a
a<-data.frame(a,性别=c("男","男","女"))
a#这是用dataframe增加列



#修改值
a<-data.frame(姓名=c("韩","梦","转"),
              成绩=c(66,100,99),
              籍贯=c("陕西","山西","四川")
              )
a$成绩[1]=100
a$姓名[1]="韩梦转" #这是错误的,需要加 stringsAsFactors=FALSE
a[[3]][1]="吉林" #stringsAsFactors=FALSE
a[1,2]=100 #第一行,第二列,成绩那栏,可以改
a[1,1]="韩梦转" #需要加stringsAsFactors=FALSE
a[2,]=c("韩梦转",200,"无锡")#需要加stringsAsFactors=FALSE
a[,2]=c(100,200,300)

#删除行或列
a<-data.frame(姓名=c("韩梦转","李晓红","王小刚","李晓娜"),
              性别=c("男","女","男","女"),
              籍贯=c("山西","陕西","云南","无锡")
              stringsAsFactors=FALSE,
             
)
a<-a[-1,]#删除第一行dataframe
a<-a[,-2]#删除第二列dataframe
a<-a[-3]#删除第三列 dataframe
a<-a[c(-2,-3),]#删除第二行第三行
a<-a[,c(-2,-3,-4)]#删除第2列第3,4列只剩下一列的时候,数据类型会发生改变,character,字符
a<-a[,c(-2,-3,-4),drop=FALSE]#删除第2,3,4列 dataframe 数据框类型
a<-a[c(-2,-3)]#删除第二列第三列 dataframe 数据框

因子

a<-c("韩梦转","王小刚","李小龙","赵晓丽","马小跳","韩梦转","王小刚","李小龙")
aFactor<-factor(a)#将a向量转化为因子,在因子内不同的数值即为水平,因子输出不带引号
aFactor[2]<-"熊大" #不会改成功,因为不是原先就存在的因子
aFactor<-factor(a,levels=c("韩梦转","王小刚","李小龙","赵晓丽","马小跳","熊大"))#如果要改aFactor里面的元素,改的元素要在已有的水平里 ,没有的话就添加
length(aFactor)
tapply(x,f,g)
#x:向量
#f:因子
#g:函数
#将向量按照f的因子进行分组,并针对分组应用g函数
a<-c(2,3,5,7,8,99)
name<-c("韩梦转","王小刚","李小龙","赵晓丽","马小跳","韩梦转")
tapply(a,name,sum/mean/各种函数)
a<-data.frame(姓名=("韩梦转","王小刚","李小龙","赵晓丽","马小跳"),
              age=(11,22,12,14,17),
              hour=(12,33,24,56,122)
)
a$成年<-ifelse(a$age>18,"成年","未成年")
tapply(a$hour,list(a$姓名,a$成年),mean)#根据姓名和成年的条件计算hour的平均值,设定了两个因子,一个是性别,一个是指示变量(成年or未成年,由于这两个因子每个都有不同的水平,tapply会根据因子匹配组合,然后对魅族应用函数mean)
split(x,f)
#x:向量,数据框
#f:因子,将x按照f分组
a<-data.frame(姓名=("韩梦转","王小刚","李小龙","赵晓丽","马小跳"),
              age=(11,22,12,14,17),
              hour=(12,33,24,56,122)
              gender=("男","女","男","男","女")
)
split(a,list(a$gender,a$age))

选择结构

if语句

if(条件表达式) expression
x<-24
if (x %% 2 ==0) print("偶数")
if (条件表达式) {
    expression
}
#if后面如果是一行,则花括号可以省略,否则就必须要将所有的语句都放在花括号中
a<-6
if (a>0) {
    print("哈哈")
    print("正数")
}
if (a<0) {
    print("负数")
    print(a)
}
if(条件表达式) expression1 else expression2
x<-6
if (x>0)print("正数") else print("负数")
if (条件表达式){
    expression1
    ...
} else
    expression

a<-sample(-10:10,1)
a
if (a>0){
    print("a>0")
} else {
    print("a<0")
    print("重新输出")
}
ifelse(条件表达式,expression1,expression2)#表达式成立,执行1,不成立,执行2
x<-3
ifelse(x>0,x,-x)

ifelse(x>0,">0",ifelse(x<0,"<0","=0"))#ifelse嵌套

if(条件表达式1) {
    expression1
} else if (条件表达式2) {
    expression2
} else if (条件表达式3) {
    expression3
} else {
    expression4
}
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值