我有一个dataframe,看起来像这样:
example <- data.frame(
date = as.Date(c('2023-03-05',
'2023-02-24', '2023-02-25',
'2023-03-01', '2023-03-02',
'2023-03-03',
'2023-03-04')),
CID = c(137,
157, 157,
222, 222,
133,
260),
PID_A = c(2137,
2157, 2157,
2222, 2222,
1133,
1260),
PID_B = c(NA, NA, NA, NA, NA, NA, 2260),
give_A = c('a', NA, 'b',
'c', 'd', 'e', 'g'),
receive_B = c(NA, NA, NA, NA, NA, 'f', 'h'),
rating_1 = c(1,2,3,4,5,6,7),
rating_2 = c(2,5,6,2,3,1,1)
)
字符串
我想修改数据框,使得当且仅当PID_A
以'2'开头且PID_B
为NA时,将PID_A
中的值移位到PID_B
,并将give_A
中的文本与receive_B
交换。
以下是示例输出:
example_solution <- data.frame(
date = as.Date(c('2023-03-05',
'2023-02-24', '2023-02-25',
'2023-03-01', '2023-03-02',
'2023-03-03',
'2023-03-04')),
CID = c(137,
157, 157,
222, 222,
133,
260),
PID_A = c(NA, NA, NA, NA, NA,
1133,
1260),
PID_B = c(2137,
2157, 2157,
2222, 2222, NA, 2260),
give_A = c(NA, NA, NA, NA, NA, 'e', 'g'),
receive_B = c('a', NA, 'b',
'c', 'd', 'f', 'h'),
rating_1 = c(1,2,3,4,5,6,7),
rating_2 = c(2,5,6,2,3,1,1)
)
型
有人知道一个有效的方法来解决这个问题吗?
谢谢你,谢谢
2条答案
按热度按时间up9lanfz1#
我能找到的最简单的方法是使用for循环:
字符串
pbgvytdp2#
下面是我的基本R解决方案
within
:字符串