Open In App

Select rows from R DataFrame that contain both positive and negative values

Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will be discussing how to select rows in the data frame that contains both positive and negative values in R Programming Language. Let’s take an example for better understanding.

Suppose you have the following data frame in R that contains multiple columns and rows. All rows contain negative values or positive values or maybe both as follows.

Dataframe in use:

 

temp_1

temp_2

temp_3

temp_4

temp_5

1.

-74

88

39

-64

-83

2.

-89

52

37

-26

-39

3.

34

-28

-39

-54

-53

4.

-82

-19

-64

-33

-20

5.

-64

39

-93

-43

-31

6.

92

86

44

23

82

7.

-67

-31

38

63

-17

So, our task is to select only those rows which contain both positive and negative values. After selecting values, our data frame should look like this.

Expected output:

 

temp_1

temp_2

temp_3

temp_4

temp_5

1.

-74

88

39

-64

-83

2.

-89

52

37

-26

-39

3.

34

-28

-39

-54

-53

5.

-64

39

-93

-43

-31

7.

-67

-31

38

63

-17

 

We are going to take a subset of the data frame if and only there is any row that contains values greater than 0 and less than 0, otherwise, we will not consider it.

Syntax:

subset(x,(rowSums(sign(x)<0)>0) & (rowSums(sign(x)>0)>0))

Here, x is the data frame name. 

Approach:

  • Create dataset
  • Apply subset()
  • Select rows with both negative and positive values
  • Display those rows

Example:

R




# To select rows in dataframe 
# that contains both positive and negative values
  
# Creating dataset 
# creating fisrs column
first <- c(-74,-89,34,-82,-64,92,-67)
  
# creating second column
second <- c(88,52,-28,-19,39,86,-31)
  
# creating third column
third <- c(39,37,-39,-64,-93,44,38)
  
# creating fourth column
fourth <- c(-64,-26,-54,-33,-43,23,63)
  
# creating fifth column
fifth <- c(-83,-39,-53,-20,-31,82,-17)
  
# creating dataframe
x <- data.frame(temp_1=first,
                 temp_2=second,temp_3=third,
                 temp_4=fourth,temp_5=fifth)
  
# checking if there exist a row with 
# both positive and negative values
subset(x,(rowSums(sign(x)<0)>0) & (rowSums(sign(x)>0)>0))


Output:

Figure 1



Last Updated : 01 Apr, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads