我有一个包含100个问题的数据集(下面我有一个包含3个问题的子集)。 我想用" answer"中提供的实际答案替换所有答案ID。数据集。最终结果显示在"结果"数据框。
数据
name q1 q2 q3
1 a 1 3 7
2 a 8 3 1
3 a 3 9 2
4 b 4 4 3
答案
id str
1 TRUE
2 FALSE
3 YES
4 NO
5 LESS
6 MORE
7 GREATER
8 LESS
9 NONE
10 DAILY
结果
name q1 q2 q3
1 a TRUE YES GREATER
2 a LESS YES TRUE
3 a YES NONE FALSE
4 b NO NO YES
答案 0 :(得分:5)
我们可以match
数据集的元素('df1',没有'name'列)和'answer'中的'id'来获取数字索引(在这种情况下我们不需要match
。通常,使用match
)并获得相应的“str”可能更安全。
df1[-1] <- answer$str[match(as.matrix(df1[-1]), answer$id)]
df1
# name q1 q2 q3
#1 a TRUE YES GREATER
#2 a LESS YES TRUE
#3 a YES NONE FALSE
#4 b NO NO YES
或者使用lookup
中的qdapTools
,key/value
列可以将 library(qdapTools)
df1[-1] <- lookup(unlist(df1[-1]), answer)
列作为'data.frame'(即'answer')并获取匹配值
df1[-1] <- with(answer, setNames(str, id))[as.character(unlist(df1[-1]))]
或者
UserRole deleteUserRoleObject = (UserRoles.Where(ur => ur.UserId == id)).Single();
UserRoles.Remove(deleteUserRoleObject);
SaveChanges();
答案 1 :(得分:1)
或使用索引:
my_decorator(lambda: print(datetime.datetime.now()) )()
可以将较大的任务细分为简化示例以测试方法。创建仅包含data[-1] <- sapply(data[-1], function(x) answer$str[x])
# name q1 q2 q3
# 1 a TRUE YES GREATER
# 2 a LESS YES TRUE
# 3 a YES NONE FALSE
# 4 b NO NO YES
值的向量。 q1
如果我们可以替换这四个,那么很有可能扩展操作:
v <- c(1,8,3,4)
这会创建第一个问题列。代码的其余部分是为每列重复该过程。
修改强>
没有answer$str[v]
[1] TRUE LESS YES NO
的更快捷方式。只要查找列表按顺序排列并且不重复,它就会起作用:
sapply