R 数据处理技巧_3

17.选择行

R语言第二章数据处理②选择行

按逻辑条件筛选行:my_data%>%filter(Sepal.Length> 7)
选择n个随机行:my_data%>%sample_n(10)
选择行的随机分数:my_data%>%sample_frac(10)
按值选择前n行:my_data%>%top_n(10,Sepal.Length)

16.选择列

R语言第二章数据处理①选择列
select():将一列或多列提取为数据表。 它还可用于从数据框中删除列。
select_if():根据特定条件选择列。 例如可以使用此函数选择列,如果它是数字。
辅助函数 - starts_with(),ends_with(),contains(),matches(),one_of():根据名称选择列/变量

15.分数字符串变小数

R语言分数字符串变小数

14.如果data.frame某列中一个位置赋值错误,显示“factor invidi…啥啥的”

-> 把这列class改为character

13.对data.frame按照某一列排序

12.按条件选取data.frame

1.按字段值

#取pH值大于7的所有行
my.dataset<-subset(my.dataset, pH <7)
my.dataset[my.dataset$pH > 7,]
my.dataset[my.dataset$pH!=-0.01,]
allrate <- data.frame(ph=c(1,NA,'D'),pd=c(1,2,3))
#取hotel_id,hotel_url
a1<-subset(data1,select=c(hotel_id,hotel_url))
#筛选所有存在NA的行
allrate[is.na(allrate),] 
#筛选所有的NA,并赋值为0
allrate[is.na(allrate)] <- 0
allrate[allrate==-Inf] <- -1

2.模糊匹配

#取pH值在(7.4,6.3)集合中的所有列
isph <- c(7.4,6.3)
my.dataset[which(my.dataset$pH  %in% isph),]
#取pH值在(7.4,6.3)集合中的site列
my.dataset[which(my.dataset$pH  %in% isph),site]

选取S9列值为100-299元,B15的值为300-399元或300-399元或500元以上

a18 <- data[(data$S9=='100-299')&(data$B15 %in% c('300-399元','300-399元','500元以上')),]

3.按一定规律提取数据

#提取16,16+21,16+2*21,,,直到390
i <- seq(16,390,21)
arpu <- data[,i]

4.往data.frame添加列

#这种方式返回的是矩阵
allrate <- cbind(allrate,rate)
#往allrate里添加一列,列名为actdays
allrate <- data.frame(allrate,actdays=rate)

11.data.frame调整列的顺序

  cols <- colnames(data)
  new_cols <- c(cols[1],cols[10],cols[6], cols[8],cols[2],cols[9],cols[7],cols[3:5])
  data2<-data[,new_cols]

10.按要求调整行的顺序

  data<- data[order(data$med,decreasing = T),] ##按照某一列将数据框重新排序
  data$sample = factor(data$sample,levels=rev(unique(data[,1])))  ##固定现有的sample顺序

9.R语言筛选出不重复的行的几种方法

8.factor转换numeric

link.

mean(as.numeric(as.character(factorname)))
mean(as.numeric(levels(factorname)[factorname]))

7.melt函数与dcast函数使用

reshape2包
链接: link

6.R语言循环多个文件画图生成一个or批量生成多个pdf文件

5.ggsurvplot 修改字体 参考 https://github.com/kassambara/survminer/issues/245

# The elements in the risk table are text elements not theme elements.
# To change the font family, specify the arguments:
# ggtheme (for theme elements),
# and font.family (for text element in the tables),
ggsurvplot(xxx,
ggtheme = theme(text=element_text( family = "serif") ),
font.family = "Times New Roman" )

4.R中查找某个向量中元素在另一个向量中的位置:参考https://blog.csdn.net/abc1026497385/article/details/107138233

取了向量交集之后,想要找到子集在之前的向量中的位置,进行筛选
使用match函数,match(x,y),返回x在y中的位置。
(The function match works on vectors : 函数match适用于向量)

3.%in% 参考 https://blog.csdn.net/chch998/article/details/108007588?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242

match only returns the first encounter of a match, as you requested. match仅根据您的请求返回match的第一次匹配。 It returns the position in the second argument of the values in the first argument. 它返回第一个参数中值在第二个参数中的位置。

For multiple matching, %in% is the way to go : 对于多个匹配, %in%是可行的方法:

x <- sample(1:4,10,replace=TRUE)
x
# [1] 3 4 3 3 2 3 1 1 2 2
which(x %in% c(2,4))
# [1]  2  5  9 10

%in% returns a logical vector as long as the first argument, with a TRUE if that value can be found in the second argument and a FALSE otherwise. 只要第一个参数, %in%返回一个逻辑向量,如果可以在第二个参数中找到该值,则返回TRUE ,否则返回FALSE 。

2.R中元素包含字母和数字的字符向量进行排序

gtools::mixedsort(ls(pattern = "^Plot[0-9]"))

1.合并不等长向量到data.frame

dataTemp <- list(1:3, 1:4, 1:7, 1:8)
dataTemp2 <- do.call(cbind, 
                     lapply(lapply(dataTemp, unlist), `length<-`, 
                            max(lengths(dataTemp))))
dataTemp2[is.na(dataTemp2)] = 0

这个更方便

Vec1 <- unequalst[[3]] %>% purrr::set_names(c("stu.1","stu.2","stu.3","stu.4","stu.5","stu.6"))
Vec2 <- unequalst[[2]] %>% purrr::set_names(c("stu.1","stu.2","stu.3","stu.4","stu.5"))
data.frame(dplyr::bind_rows(Vec1,Vec2))
###############
  stu.1 stu.2 stu.3  stu.4   stu.5 stu.6
1     m     m     m      m       f     c
2   sai   ram  hari deepak sahithi  <NA>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值