访问数据框r中vector的第一个值



我有一个数据框架,它由各种变量和一个特定的列组成,其中有一个向量。是否有一些代码来替换列中发现的第一个向量的值?

<表类> ID 费用 tbody><<tr>1c (420700)24003c (200720)

您可以使用sapply遍历向量并提取第一个值:

df$Fees <- sapply(df$Fees, "[[", 1)

您可以从purrr中使用map_dbl()来提取列表中每个元素的第n个元素。

library(tidyverse)
df %>%
mutate(Fee1 = map_dbl(Fees, 1))
# # A tibble: 3 × 3
#      ID Fees       Fee1
#   <int> <list>    <dbl>
# 1     1 <dbl [2]>   420
# 2     2 <dbl [1]>   400
# 3     3 <dbl [2]>   200

数据
df <- structure(list(ID = 1:3, Fees = list(c(420, 700), 400, c(200, 720))),
row.names = c(NA, -3L), class = "data.frame")

我们可以这样做:

瓶颈是Feeslist。加上paste,我们把它变成character。然后我们使用parse_number。这总是只提取第一个数字:

library(readr)
library(dplyr)
df %>% 
mutate(Fees = parse_number(paste(Fees)))
ID Fees
1  1  420
2  2  400
3  3  200

下面是使用mappluck提取向量中的第一项的另一个选项:

library(tidyverse)
df %>%
mutate(Fees =  map_dbl(Fees, pluck, 1))

ID Fees
1  1  420
2  2  400
3  3  200

或者使用rowwise和索引的另一个选项:

df %>% 
rowwise %>% 
mutate(Fees = Fees[1])

我们也可以使用pluckrowwise:

df %>%
rowwise %>%
mutate(Fees = pluck(Fees, 1))

或者我们可以跳过purrr使用firstrowwise:

df %>%
rowwise %>%
mutate(Fees = first(Fees))

df <- structure(list(ID = 1:3, Fees = list(c(420, 700), 400, c(200, 
720))), row.names = c(NA, -3L), class = "data.frame")

最新更新