r语言 - 如何添加一些带有十进制变量的 IF 语句



我有一个包含十进制值的变量X。我想编写一些 IF 条件以将 X 与数据帧匹配。

假设我有 X = 1.1 和一个名为 OutputDF 的数据帧,如下所示。

OutputDF
   score    ID
1    32     1.2
2    35     1.3
3    20     2.1
4    15     3.2      

我想写一些适用于小数的 IF 条件。

我想包含有关此输出的 3 个条件。

C1.如果 1.x 是唯一的元素,请打印 YES。在上面的输出中,我们可以看到 1.x 不是唯一的元素。那里也有2.x和3.x。

C2.如果 1.x 不是唯一的元素,但 1.x 得分最高,请打印 YES。在样本中,我们可以看到 1.x 包含最高分,所以这次是肯定的。

C3.如果 1.x 不是唯一的元素,但 1.x 出现的频率最高,则打印 YES。在示例中,我们可以看到 1.x 与其他元素相比出现了 2 次,因此它是肯定的。

所以我对上述示例的预期输出是

ID  C1   C2   C3
1.1 NO   YES  YES

一种函数方法,用于获取任何十进制值和任何数据帧的预期输出,其中包含带值的变量score和带十进制值的变量ID

FOO <- function(x, df){
  data.frame(ID = x,
             C1 = ifelse(all(trunc(df$ID) %in% trunc(x)), "YES", "NO"),
             C2 = ifelse(max(df$score[trunc(df$ID) %in% trunc(x)]) == max(df$score), "YES", "NO"),
             C3 = ifelse(which.max(table(trunc(df$ID))) == trunc(x), "YES", "NO"))
}

例:

df <- data.frame(score = c(32,35,20,15),
                 ID = c(1.2,1.3,2.1,3.2))
FOO(1.1, df)
   ID C1  C2  C3
1 1.1 NO YES YES

使用基本 R 请找到答案

df <- read.table(text="   score    ID
1    32     1.2
2    35     1.3
3    20     2.1
4    15     3.2      ",header= T)

答:-

df$c1 <- ifelse(length(unique(substr(df$ID,1,1))) == 1,"Yes","No")
df$c2 <- ifelse((substr(df$ID,3,3)) == max(substr(df$ID,3,3)),"Yes","No")
# Create the function as Mode is not directly available in R ##
getmode <- function(v) {
  uniqv <- unique(v)
  uniqv[which.max(tabulate(match(v, uniqv)))]
}

df$c3 <- ifelse(substr(df$ID,1,1) == getmode(substr(df$ID,1,1)),"Yes","No")

result <- structure(list(score = c(32L, 35L, 20L, 15L), ID = c(1.2, 1.3, 
2.1, 3.2), c1 = c("No", "No", "No", "No"), c2 = c("No", "Yes", 
"No", "No"), c3 = c("Yes", "Yes", "No", "No")), row.names = c("1", 
"2", "3", "4"), class = "data.frame")

这应该可以做到

X <- c(1.1,1.2,2.4,3.5)
score<-c(5,4,3,2)
if(all(floor(X) ==1)) {
print('yes')
} else{
print('no' )}
if(any(score[floor(X)==1]==max(score))){
print('yes')
} else{
print('no' )}
if(as.numeric(names(table(floor(X)))[which(table(floor(X)) == max(table(floor(X)))) ]) 
 ==1){
print('yes')
} else{
print('no' )}

最新更新