zoukankan      html  css  js  c++  java
  • 【R】R中的序列问题——待更新

    R中处理一些序列

    1 筛选列表中特定的行
    ==============================================================
    a <- data.frame(t1 = c('A','B','C','D','E','F','G'),t2 = rep(2, 7), t3 = 1:7 )
    a
      t1 t2 t3
    1  A  2  1
    2  B  2  2
    3  C  2  3
    4  D  2  4
    5  E  2  5
    6  F  2  6
    7  G  2  7
    b <- c('G','B','D')
    ===============================================================
    自己的方法是
    -------------------------------------------------
    c <- !is.na(match(a$t1,b))
    subset(a, c, t1:t3)
      t1 t2 t3
    2  B  2  2
    4  D  2  4
    7  G  2  7
    -------------------------------------------------
    可是觉得太笨了,求助COS论坛。
    解决办法:a[a$t1 %in% b, ],不错


    2 找两个向量的交集
    match() 或者 intersect()
    所以还是使用match()较好
    ===============================
    # The code of intercet
    function (x, y)
    {
        y <- as.vector(y)
        unique(y[match(as.vector(x), y, 0L)])
    }
    <environment: namespace:base>
    ================================

    3 按照某行/列排列某矩阵

    sort(x, decreasing = FALSE, ...):将一个序列进行升序/降序

    order(..., na.last = TRUE, decreasing = FALSE)sort()排序之后的序列按照order(升序或者降序)在原始序列中的位置。简而言之一句话“排序后的序列在原序列的位置”,这个函数在“按照下标访问元素”有着很大的作用。rank():序列中每个元素的排名。简而言之,序列s1和它的从小到达排列的序列s2,order就是s2的元素在s1中的位置,rank就是s1元素在s2中的位置。所以,order返回的是排序后元素在原始序列中的位置,rank返回的原始序列的排名。

    ================================

    > b
    [1] 1 5 7 4 31 24
    > b2
    [1] 24 31 1 7 4 5
    > sort(b)[rank(b2)]
    [1] 24 31 1 7 4 5
    ================================

    ===============================

    > a <- matrix(c(c(5,2,3,1,4), 1:5,5:1), 5 )
    > a
         [,1] [,2] [,3]
    [1,]    5    1    5
    [2,]    2    2    4
    [3,]    3    3    3
    [4,]    1    4    2
    [5,]    4    5    1
    > a[order(a[,1]), ]
         [,1] [,2] [,3]
    [1,]    1    4    2
    [2,]    2    2    4
    [3,]    3    3    3
    [4,]    4    5    1
    [5,]    5    1    5
    ===============================
    按照某特定顺序排列某矩阵
    ===============================
    > c1 <- cbind(b, 1:6)
    > c1
          b 
    [1,]  1 1
    [2,]  5 2
    [3,]  7 3
    [4,]  4 4
    [5,] 31 5
    [6,] 24 6
    > b2
    [1] 24 31  1  7  4  5
    > c2 <- c1[order(c1[,1]), ]
    > c2
          b 
    [1,]  1 1
    [2,]  4 4
    [3,]  5 2
    [4,]  7 3
    [5,] 24 6
    [6,] 31 5
    > c2[rank(b2), ]
          b 
    [1,] 24 6
    [2,] 31 5
    [3,]  1 1
    [4,]  7 3
    [5,]  4 4
    [6,]  5 2
    ==========================

    4 按照某列筛选两个data.frame的相同部分
    merge(x, y, by = intersect(names(x), names(y)),
               by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
               sort = TRUE, suffixes = c(".x",".y"), incomparables = NULL, ...)
    by.x表示x中的某列,by.y表示y中的某列,sort可以设置成FALSE。
     
    5 删除相同的行或者列,使用duplicated函数。注意,MARGIN = 1(default)按照行排列,即返回结果的长度等于nrow;MARGIN = 2相反,是按照列排列
    =========================
    > a <- matrix(c(1:10, 10:1), 5)
    > a
         [,1] [,2] [,3] [,4]
    [1,]    1    6   10    5
    [2,]    2    7    9    4
    [3,]    3    8    8    3
    [4,]    4    9    7    2
    [5,]    5   10    6    1
    > a <- apply(a, 2, sort)
    > a
         [,1] [,2] [,3] [,4]
    [1,]    1    6    6    1
    [2,]    2    7    7    2
    [3,]    3    8    8    3
    [4,]    4    9    9    4
    [5,]    5   10   10    5
    > duplicated(a, MARGIN=2)
    [1] FALSE FALSE  TRUE  TRUE
    > a[, !duplicated(a, MARGIN=2)]
         [,1] [,2]
    [1,]    1    6
    [2,]    2    7
    [3,]    3    8
    [4,]    4    9
    [5,]    5   10
    =======================================
    http://cos.name/cn/topic/16028提供了另外一种去除相同行或者列方法,即使用SQL。
     
  • 相关阅读:
    解决org.openqa.selenium.WebDriverException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms org.springframework.beans.BeanInstantiation
    jsp学习---css基础知识学习,float,position,padding,div,margin
    jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门
    java 查询 mongodb 中的objectid
    jsp学习---使用jsp和JavaBean实现超简单网页计算器
    jsp学习--JavaBean定义和在Jsp中使用JavaBean
    jsp学习--如何定位错误和JSP和Servlet的比较
    jsp学习--JSP运行原理,九大隐式对象和JSP常用标签
    jsp学习--基本语法和基础知识
    android开发学习---layout布局、显示单位和如何进行单元测试
  • 原文地址:https://www.cnblogs.com/xianghang123/p/2652988.html
Copyright © 2011-2022 走看看