通过将向量与数据帧匹配来创建向量[R]

通过将向量与数据帧匹配来创建向量[R],r,vector,R,Vector,我有以下数据帧: > zCode <- sample(50:150, size = 10, replace = TRUE) > x <- sample(50:150, size = 10, replace = TRUE) > test <- data.frame(x,zCode ) > test zCode x 1 110 114 2 108 150 3 57 100 4 53 98 5 114 67 6 143 126 7

我有以下数据帧:

> zCode <- sample(50:150, size = 10, replace = TRUE)
> x <- sample(50:150, size = 10, replace = TRUE)
> test <- data.frame(x,zCode )
> test
  zCode  x
1  110 114
2  108 150
3   57 100
4   53  98
5  114  67
6  143 126
7  110  95
8  106 101
9  103  70
10 149  73

这里有一些可能性。他们不使用任何软件包

1)对于z的每个元素,使用该zCode计算测试中的行子集,然后取每个x的最大值:

data.frame(z, x = sapply(z, function(z) max(subset(test, z == zCode)$x)))
给予:

    z   x
1  53  98
2  57 100
3 110 114
    z   x
1  53  98
2  57 100
3 110 114
2)另一种方法是使用聚合查找所有最大值,并与z合并以仅获得以下值:

merge(data.frame(z), aggregate(x ~ zCode, test, max), by = 1, all.x = TRUE)
给予:

    z   x
1  53  98
2  57 100
3 110 114
    z   x
1  53  98
2  57 100
3 110 114
Hote:所使用的可复制输入为:

Lines <- "
  zCode  x
1  110 114
2  108 150
3   57 100
4   53  98
5  114  67
6  143 126
7  110  95
8  106 101
9  103  70
10 149  73"
test <- read.table(text = Lines)

z <- c(53, 57, 110)

行这里有一些可能性。他们不使用任何软件包

1)对于z的每个元素,使用该zCode计算测试中的行子集,然后取每个x的最大值:

data.frame(z, x = sapply(z, function(z) max(subset(test, z == zCode)$x)))
给予:

    z   x
1  53  98
2  57 100
3 110 114
    z   x
1  53  98
2  57 100
3 110 114
2)另一种方法是使用聚合查找所有最大值,并与z合并以仅获得以下值:

merge(data.frame(z), aggregate(x ~ zCode, test, max), by = 1, all.x = TRUE)
给予:

    z   x
1  53  98
2  57 100
3 110 114
    z   x
1  53  98
2  57 100
3 110 114
Hote:所使用的可复制输入为:

Lines <- "
  zCode  x
1  110 114
2  108 150
3   57 100
4   53  98
5  114  67
6  143 126
7  110  95
8  106 101
9  103  70
10 149  73"
test <- read.table(text = Lines)

z <- c(53, 57, 110)

行这是一个
数据。表
解决方案:

# Original data
dt <- data.table(zCode = c(110, 108, 57, 53, 114, 143, 110, 106, 103, 149), 
                 x     = c(114, 150, 100, 98, 67, 126, 95, 101, 70, 73))
z <- c(53, 57, 110)

# a new dataframe based on vector z
dt[zCode %in% z, max(x), by = zCode]
   zCode  V1
1:   110 114
2:    57 100
3:    53  98

下面是一个
数据表
解决方案:

# Original data
dt <- data.table(zCode = c(110, 108, 57, 53, 114, 143, 110, 106, 103, 149), 
                 x     = c(114, 150, 100, 98, 67, 126, 95, 101, 70, 73))
z <- c(53, 57, 110)

# a new dataframe based on vector z
dt[zCode %in% z, max(x), by = zCode]
   zCode  V1
1:   110 114
2:    57 100
3:    53  98

set.seed()
在生成数据之前是一个好主意。
set.seed()
在生成数据之前是一个好主意。谢谢,您知道任何简单的方法来调整lappy代码以获得唯一计数并添加多个条件吗?谢谢,您知道任何简单的方法来调整lappy代码以获得唯一计数并添加多个条件吗?