假设我有以下数据集:
dat <- read.table(text="id_1 id_2
123 NA
456 NA
NA 3
NA 1
NA 1", header=T)
Run Code Online (Sandbox Code Playgroud)
我想更改id_1第一行的值。我想做这样的事情:
dat %>% slice(1) %>% mutate(id_1 == "new_id") %>% unslice()
Run Code Online (Sandbox Code Playgroud)
然而,似乎没有命令unslice,所以我留下了一个只有一行(修改后的)的数据框。就地修改后是否有一种干净的方法可以恢复原始数据集?
Mor*_*arz 20
如果我正确理解您的问题并且您只想更改列中的值id_1(而不是更改列名称),则可以使用该row_number命令访问该行。
dat %>%
mutate(id_1 = ifelse(row_number() == 1, "new_id",id_1))
Run Code Online (Sandbox Code Playgroud)
如果您还想对更多行执行此操作,请考虑:
dat %>%
mutate(id_1 = case_when(row_number() == 1 ~"new_id1",
row_number() == 2 ~"new_id2",
TRUE ~ id_1))
Run Code Online (Sandbox Code Playgroud)
ETC。
请注意,这当然会将列类型更改为字符类型。如果您不想按行号访问该行,也可以通过要更改的确切值来执行此操作。
dat %>%
mutate(id_1 = ifelse(id_1 == 456, "new_id",id_1))
Run Code Online (Sandbox Code Playgroud)